プリミティブデータ型の実行時間と、同じ数を数えるためのラッパークラスを測定しようとしました。そのラッパークラスは、基本的なデータ型よりも時間がかかっています。プリミティブデータ型のパフォーマンス対ラッパークラス
次のコードで、プリミティブt1 = 5の実行時間とラッパークラスt2 = 31の実行時間。
import java.io.*;
import java.util.*;
public class Performance
{
public static long primitive(int count)
{
long startTime = System.currentTimeMillis();
for(int i=0;i<10000;i++)
count++;
System.out.println(count);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
return elapsedTime;
}
public static long wrapper(Integer count)
{
long startTime = System.currentTimeMillis();
for(int i=0;i<10000;i++)
count++;
System.out.println(count);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
return elapsedTime;
}
public static void main(String args[])
{
Integer c = new Integer(0);
long t2=Performance.wrapper(c);
int count=0;
long t1=Performance.primitive(count);
System.out.println("t1="+t1+"t2="+t2);
}
}
Wrapperクラス(Integer)などのオブジェクト作成によるパフォーマンスの違いはありますか?
ご了承ください。
ありがとうございます。
ラッパーを自分で作成する代わりに、キャスト/オートボックスを使用してみてください。 '整数 'はバイト範囲内にキャッシュされます。それにもかかわらず、マイクロベンチマーキングの方法は、正確な結果(jvmウォームアップ、より多くの実行、ナノとミリ秒など)に必要なものと同程度ではありません。 – Rogue
プリミティブの前にラッパーを試してみることもできますあなたが同じことを見ているかどうかを確認してください。私はローグに同意します - あなたがやっているマイクロベンチマークにはいくつかの問題があります。理由の詳細については、https://github.com/google/caliperをご覧ください。 – Snekse
あなたは気になる_why_で質問を更新したいかもしれません。より良い回答が得られるかもしれません。 – Snekse