我在多线程Java程序中缩放图像。
我使用2种不同的缩放方法:
1种情况:
Image tmp = bufferedImage.getScaledInstance(w, h, Image.SCALE_DEFAULT);
此方法将CPU负载为100%。在我的数据集上工作20秒。
2种情况:
Image tmp = bufferedImage.getScaledInstance(w, h, Image.SCALE_SMOOTH);
此方法仅加载CPU的50%。
在我的数据集上工作35秒。
无论有多少线程运行此代码。
感觉像Image.SCALE_SMOOTH使用HDD,这是瓶颈。
或使用一些不接受大量图像的队列。
如何提高2机箱性能并使用100%的CPU?
最佳答案
www上有很多文章,为什么.getScaledInstance()
是邪恶
尽管我不确定Java专家是否没有在后台进行修复,但我还是建议您阅读
The Perils of Image.getScaledInstance()
并检查那里描述的方法。甚至可能有一些比jdk默认更好的扩展库。
关于java - 性能Image.SCALE_DEFAULT与Image.SCALE_SMOOTH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507184/