我維護一個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