写真を暗号化するアプリケーションを作成していますが、ギャラリーのようなアクティビティで復号化してサムネイルを表示する必要があります。もちろん、別のアクティビティでフルサイズの画像をクリックして表示することもできます。AES/CBC/PKCS7Padding 暗号を 256 ビット キーで使用しています。PBEWithSHA256And256BitAES-CBC-BC を使用して暗号鍵を導出し、メモリに格納します。次に、暗号化/復号化を行う必要があるすべてのスレッドは、メモリからそのキーを使用して Cipher オブジェクトを初期化します。
だからここに私の問題があります。多くの画像を同時に復号化すると (ギャラリーを表示する必要があるとしましょう)、フルサイズの画像を復号化しようとすると、非常に遅くなります。一方、(サイズに関係なく)1つの画像のみを復号化すると、ギャラリーに移動してフルサイズの画像を復号化すると非常に高速です。
私は本当に混乱しています。
それで、私は何を間違っていますか?Bouncy Castle Crypto ライブラリはスレッドセーフではないのでしょうか?
更新:この問題は JIT に関連していることがわかりました。JIT を無効にすると、処理速度の違いが完全になくなります。マルチスレッドで写真を復号化するときにコードの正しい部分をJITコンパイルして、最初に1枚の写真だけを復号化するのと同じ速度を得るためにコードを最適化する方法を理解するのを手伝ってくれる人はいますか?