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 回答