我维护一个Java应用程序,该应用程序生成很多小部件(我说小部件是因为它会生成PDF或PNG文件 - 到磁盘)。该应用程序旨在生成PDF的和后来的图像成为一个要求。Java 2D ImageIO.Write阻碍性能
我的每秒事务数(TPS)在生成映像时受到影响。基本流程是我创建一个BufferedImage和Graphics2D实例。使用Graphics2D对象绘制一些文本。我拉入一些其他图像以添加到我的新图像。然后我将BufferedImage写入OutputStream。
我已经磨练了ImageIO.write()方法作为一个可能的罪魁祸首。该应用程序是RESTful和整个交易可以采取...让说500毫秒。我使用ImageIO.write()方法占用了至少80-90%的交易时间。
ImageIO.write(image,"PNG",os); // 420ms !!!!
我有一个困难的时候找到解决ImageIO.write()...任何建议表示赞赏。
注:图像是RGB ColorModel & &最终大约50kb。我用Binary颜色模型已经看到了更好的性能,但颜色是一个要求。
感谢您的回应,我不知道这些设置,并会进一步研究。然而,我确实找到了今天尝试的第三方编码器。 http://objectplanet.com/pngencoder/ 我已经做了一些测试,这里是我的真实世界的结果。哪个比ImageIO好......但我仍在寻找更好的解决方案。 ImageIO - 写入时间PNG:544毫秒。 ImageIO - 写时间JPG:76毫秒。 ImageIO - 写时间JPG:751毫秒。 OPPngEncoder - 写入时间PNG:208毫秒。 – jonwilks