当尝试使用时调查各种任务的运行时System.nanoTime(),当输入数据集足够大时,该值变为负值.
使用的示例代码:
long start = System.nanoTime();
run();
long stop = System.nanoTime();
int diff = (int) (stop-start);
System.out.println(data_size+", "+diff);
Run Code Online (Sandbox Code Playgroud)
run()在越来越大的数据集上调用时,输出如下所示:
1, 80000
10, 4310000
50, 48077000
100, 171363000
250, 1061924000
500, 14018704
750, 998074408
1000, -41025184
1500, -81710664
2000, -273795736
2500, 768997600
3000, -39161248
Run Code Online (Sandbox Code Playgroud)
这对任何人都有意义吗?
rge*_*man 12
你把两者之间的差异long转换成了一个int.可能,你的long差异比Integer.MAX_VALUE(大约20亿)长,并且演员阵容int取最后32位,产生负数.此外,20亿纳秒只有2秒,所以任何时间都会溢出int.
保持差异为一个long.
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |