プロジェクトでパスワードをハッシュするために jbcrypt を使用しています。私が使用しているハードウェアでパスワードを検証するときのパフォーマンスは約 500 ミリ秒です (log_rounds を 12 に設定)。ただし、通常の使用でしばらくすると、パフォーマンス時間は突然 15 秒に低下します。低下は非常に急激で、蓄積はなく、プロセスが再開されるまで一定のままです。
プロファイリングは、余分な時間が key(..) メソッドで使用されていることを示しています。
ソース: http://jbcrypt.googlecode.com/svn/tags/jbcrypt-0.3m/src/main/java/org/mindrot/jbcrypt/BCrypt.java
このメソッドは、xor、シフトなどの基本的な関数を使用してハッシュを計算するだけです。オブジェクトの割り当て、外部リソースの使用、乱数の生成などはありません。
同じプロセス内の他の機能のパフォーマンスは低下しません。メモリ割り当ては安定しており、低いです。フル GC は含まれません。
誰かがこれを前に見たことがありますか、またはなぜこれが起こるのかの手がかりはありますか? 他の状況にある程度依存する可変パフォーマンスは理解できましたが、これは約 500ms からの非常に突然の安定した低下です。約15000ミリ秒まで。