java.nio.charset.Charset.decode(..)
/を行うためのより高速な方法を知っている人encode(..)
はいますか?
現在、私が使用しているテクノロジーのボトルネックの 1 つです。
[編集] 具体的には、私のアプリケーションでは、1 つのセグメントを Java ソリューションから JNI ソリューションに変更しました (使用していた Java テクノロジよりも、私のニーズに最も適した C++ テクノロジがあったため)。
この変更により、速度が大幅に低下しました (CPU とメモリの使用量が大幅に増加しました)。
私が使用した JNI ソリューションを詳しく調べると、Java アプリケーションは byte[] を介して C++ アプリケーションと通信しています。これらの byte[] は、Java 側から Charset.encode(..) によって生成され、C++ 側に渡されます。次に、C++ が byte[] で応答すると、Charset.decode(..) を介して Java 側でデコードされます。
これをプロファイラーに対して実行すると、Charset.decode(..) と Charset.encode(..) の両方に、JNI ソリューションの全実行時間と比較してかなり長い時間がかかっていることがわかります (JNI ソリューションのみをプロファイリングしたため、スケジュールが空いたら、後日、アプリケーション全体のプロファイルを作成します :-) )。
私の問題についてさらに読むと、それは Charset.encode(..) と decode(..) の既知の問題であり、Java7 で対処されているようです。ただし、いくつかの制約があるため、Java7 への移行は (今のところ) 私にとって選択肢ではありません。
誰かがJava5ソリューション/これに代わるものを知っているかどうかここで尋ねるのはなぜですか(申し訳ありませんが、これはJava5用であるともっと早く言及すべきでした)?:-)