我维护了一个生成大量小部件的 Java 应用程序(我说小部件是因为它会生成 PDF 或 PNG 文件 - 到磁盘)。该应用程序旨在生成 PDF 和后来的图像成为一个要求。
生成图像时,我的每秒事务数 (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。我已经看到二进制颜色模型的性能更好,但颜色是必需的。