Google Nexus 7 でマルチスレッド Java プログラム (MapReduce スタイル) を実行しようとしましたが、実行時間を次のように測定しました。
System.currentMillis();
以下のように、パフォーマンスが大きく異なることがわかりました (4 コアの Tegra 3 で 4 スレッドを使用)。
704
872
729
729
1086
778
1214
1045
749
768
しかし、シーケンシャル バージョンを使用すると、次のような安定したデータが得られました。
928
851
850
842
863
917
873
905
853
870
ガベージコレクターは並行しているのでコアもかかると思っていましたが、それが大きなばらつきの原因ですか?
パフォーマンスがシーケンシャル バージョンよりもさらに悪い場合があるのはなぜですか?