オブジェクトのタイムスタンプのいくつかのキューの挿入と削除をテストしようとしています。数回のテストを実行した後、同じコードで最大 80 倍優れた結果が得られるという大幅なスピードアップの改善が見られました。これは明らかに JVM またはハードウェア\cpu キャッシュによるキャッシュ結果のように見えますが、実行するたびに新しい結果を取得したいと考えています。
これらのキャッシュの両方またはいずれかを Java コード内からプログラムでクリアする方法はありますか?
これはおそらくJITが作動しているためです。JIT は、一定回数実行した後にバイトコードをマシン コードにコンパイルして、より効率的にします。
-XX:CompileThreshold
オプションを設定するか (デフォルト値は 10,000) 、クラスを最適化から除外することで、メソッドが最適化されるまでの呼び出し回数を変更できます。
ただし、コンパイラを無効にしてプログラムの実行速度を遅くする理由がわかりません。