この投稿で行ったのと同じテストを行いました: new String() vs リテラル文字列のパフォーマンス
つまり、どちらがパフォーマンスが優れているかをテストしたかったのです。予想通り、リテラルによる代入の方が速いという結果になりました。理由はわかりませんが、いくつかの割り当てを追加してテストを行ったところ、何か奇妙なことに気付きました: プログラムに 10.000 回を超えるループを実行させると、リテラルによる割り当ては、割り当てが 10.000 未満の場合よりも比較的高速ではありません。 . また、1.000.000 回の繰り返しでは、新しいオブジェクトを作成するよりもさらに遅くなります。
これが私のコードです:
double tx = System.nanoTime();
for (int i = 0; i<1; i++){
String s = "test";
}
double ty = System.nanoTime();
double ta = System.nanoTime();
for (int i = 0; i<1; i++){
String s = new String("test");
}
double tb = System.nanoTime();
System.out.println((ty-tx));
System.out.println((tb-ta));
上記のように実行します。私はJavaを学んでいるのですが、上司からテストをするように言われ、テストの結果を提示した後、なぜこれが起こるのか、答えを見つけるように言われました。グーグルやスタックオーバーフローで何も見つからないので、誰かが私を助けてくれることを願っています.
factor at 1 repetition 3,811565221
factor at 10 repetitions 4,393570401
factor at 100 repetitions 5,234779103
factor at 1,000 repetitions 7,909884116
factor at 10,000 repetitions 9,395538811
factor at 100,000 repetitions 2,355514697
factor at 1,000,000 repetitions 0,734826755
ありがとうございました!