Java プログラムの実行時間に影響を与える可能性のある多くの要因があることを私は知っています。私はそれらのいくつかを排除しようとしました:
- ウォームアップランは考慮され、カウントされません。
System.gc()
2 つの実行の間に呼び出されます。
しかし、データは依然として大きく変動することがわかりました。以下は、10 個のスレッドが使用されている場合のサンプルです。
157th run
0 run time: 9106171
1 run time: 9084652
2 run time: 8990820
3 run time: 8989474
5 run time: 9062850
4 run time: 9302010
9 run time: 9454475
8 run time: 9506585
7 run time: 9494990
6 run time: 9491779
total time: 31 ms
158th run
2 run time: 14754858
5 run time: 14865035
0 run time: 15759180
1 run time: 15988056
3 run time: 16660592
8 run time: 16340240
9 run time: 16544479
6 run time: 17280122
7 run time: 17249778
4 run time: 18026322
total time: 19 ms
ほとんどの実行では 17 ~ 20 ミリ秒かかりましたが、5% 未満の実行では 25 ~ 31 ミリ秒かかりました。さらに興味深いことに、後者の場合、各スレッドの実行時間はさらに短くなります。
このプログラムのメイン スレッドstart()
とjoin()
スレッドのみであり、これ以上の作業はありません。
誰かが考え/ヒントを提供できますか?