我在Internet上看到应该使用System.nanoTime()
,但这对我不起作用-它为我提供了毫秒级的时间。我只需要函数执行前后的微秒,就可以知道需要多长时间。我正在使用Windows XP。
基本上,我有这段代码,例如,在Java链表中执行了1百万个到1000万个插入。问题是我无法正确测量精度;有时,花费较少的时间将所有内容插入较小的列表中。
这是一个例子:
class test
{
public static void main(String args[])
{
for(int k=1000000; k<=10000000; k+=1000000)
{
System.out.println(k);
LinkedList<Integer> aux = new LinkedList<Integer>();
//need something here to see the start time
for(int i=0; i<k; i++)
aux.addFirst(10000);
//need something here to see the end time
//print here the difference between both times
}
}
}
我做了很多次-每个k有20次外部循环-但是结果不好。有时,进行一千万次插入所需的时间要少于一百万次,因为使用当前使用的时间我无法获得正确的测量时间(System.nanoTime())
编辑2:是的,我正在使用Sun JVM。
编辑3:我可能在代码中做错了什么,我会看看更改它是否满足我的要求。
编辑4:我的错误,似乎System.nanoTime()有效。 ew
最佳答案
我的猜测是,由于 System.nanoTime()
使用“最精确的可用系统计时器”,显然它在系统上只有毫秒精度,因此您无法得到更好的结果。