我正在尝试对大约500万个元素进行排序,并且需要记录它所花费的时间。 我正在做以下事情:
long startTime = (System.currentTimeMillis());
My Sorting Algorithm {}
long totalTime = (System.currentTimeMillis() - startTime);
以毫秒为单位,我获得了适当的时间,但是当我尝试将其转换为秒时,如下所示:
long totalTime = ((System.currentTimeMillis() - startTime)/1000);
它给我0或1不正确。
我也试过让它加倍并得到0.0 double totalTime =((System.currentTimeMillis() - startTime)/ 1000);
事实上,TimeUnit也给出0 TimeUnit.MILLISECONDS.toSeconds(totalTime)。
有人可以帮我指出会出现什么问题吗?
答案 0 :(得分:1)
您正在使用整数除法并将结果指定为整数类型。因此,最终结果总是整数。
要修复,请使用:
double totalTime = ((System.currentTimeMillis() - startTime)/1000.0);
答案 1 :(得分:0)
你需要除以1000.0。
如果您想进行微基准测试,请不要自己动手,请使用JMH:http://openjdk.java.net/projects/code-tools/jmh/
答案 2 :(得分:0)
您正在体验整数除法的样子。您将转换为>整数除法后的双,这样就没有任何区别。除以1000.0并可能在执行除法之前将分子转换为加倍:
double d = ((double) (System.currentTimeMillis()-start))/1000.0;