私はたくさんのウィジェットを生成するJavaアプリケーションを維持しています(PDFまたはPNGファイルをディスクに生成するため、ウィジェットと言います)。このアプリケーションは PDF を生成するように設計されており、それ以降は画像が必要になりました。
画像の生成時に、1 秒あたりのトランザクション数 (TPS) に問題があります。基本的な流れは、BufferedImage と Graphics2D インスタンスを作成することです。Graphics2D オブジェクトを使用して、テキストを描画します。新しい画像に追加する他の画像をいくつか取り込みます。次に、BufferedImage を OutputStream に書き込みます。
ImageIO.write() メソッドが原因の可能性があることを突き止めました。アプリケーションは RESTful であり、トランザクション全体にかかる可能性があります... 500 ミリ秒としましょう。そのトランザクション時間の少なくとも 80 ~ 90% を占めるように、ImageIO.write() メソッドをクロックしました。
ImageIO.write(image,"PNG",os); // 420ms !!!!
ImageIO.write() を回避する方法を見つけるのに苦労しています...どんな提案でも大歓迎です。
注: 画像は RGB ColorModel && で、約 50kb になります。バイナリ カラー モデルでパフォーマンスが向上することを確認しましたが、色は必須です。