2

関数の内部をプロファイリングして、どの割り当てが最も長くかかっているかを確認しようとしています。個々の操作は非常に小さいため、System.nanoTime()すべての経過時間を収集するために使用しています。これらの時間は非常に小さいため、Java は数値を科学的表記法で出力しますが、これは問題ありません。完全な数値を表示するだけで、指数の間を行ったり来たりせずに一連の数値をすばやく比較できます。

コードのセットアップ:

System.out.println("Time to taken to allocate data: " + 
                       (System.nanoTime() - startTime)/1000000000.0);

コード出力:

Time taken to allocate: 5.7987E-4

可能であれば、出力は次のようになります。

Time taken to allocate: 0.00057987

少し些細なことですが、すばやく解析するのが少し簡単になります。

4

2 に答える 2

2

のようなものはどうですか

System.out.printf("Time to taken to allocate data: %.8f%n", 
                                   (System.nanoTime() - startTime) / 1E9);

結果を小数点以下8桁に丸めます(十分なはずです)。


違いを確認するには:

double d = 5.7987E-4;
System.out.println("Time to taken to allocate data: " + d);
System.out.printf("Time to taken to allocate data: %.8f%n", d);
データの割り当てにかかった時間: 5.7987E-4
データの割り当てにかかった時間: 0.00057987
于 2013-02-24T21:09:56.507 に答える
-1

タイミング コードについては、SLF4J 拡張機能によって提供される Profiler クラスを使用することをお勧めします: http://www.slf4j.org/extensions.html#profiler

于 2013-02-24T21:19:34.363 に答える