Javaのこのコードのチャンクは、あなたが求めている数字の少なくともいくつかをどのように決定できるかを示しています。
public class Main {
private static long test (double[] tosort) {
Date begin = new Date();
Arrays.sort(tosort);
Date end = new Date();
return end.getTime() - begin.getTime();
}
public static void main(String[] args) {
double[] tosort = new double[10700];
for (int jj=0;jj<10;jj++) {
for (int ii=0;ii<tosort.length;ii++) {
tosort[ii] = Math.random();
}
System.out.println("Random data " + test(tosort));
}
for (int jj=0;jj<10;jj++) {
for (int ii=0;ii<tosort.length;ii++) {
tosort[ii] = ii;
}
System.out.println("Presorted data " + test(tosort));
}
for (int jj=0;jj<10;jj++) {
for (int ii=0;ii<tosort.length;ii++) {
tosort[ii] = tosort.length - ii;
}
System.out.println("Inverted data " + test(tosort));
}
}
}
Fyi、コードが実行されるたびに実行されたコンピューターだけが、並べ替えルーチンに費やされる1ミリ秒未満にとどまりました。意味のあるデータを取得するには、データサイズを100倍に増やす必要がありました。
- このコードは、コンパレータコードに必要な時間などを完全に抽象化します(要素はプリミティブダブルであり、他のオブジェクトの比較にはおそらくはるかに長い時間がかかります)
- ジャストインタイムコンパイラがコードを理解したら、それも少し速くなるはずです
- 代替の並べ替えアルゴリズムを使用してテスト実行を簡単に追加し、それらがどのように動作するかを確認できます
これらの数値は、ハードウェアの機能、入力データタイプ、コンピューターの負荷などによって異なりますが、少なくとも何が期待できるかを感じることができます。