我试图用115项来度量集合的运行时间。我的问题是,我只能在调试时才能测量经过的时间,并且在运行测试正常时使用StopWatch.stop();准确地设置断点--StopWatch.stop的值是0,尽管它是一个长值。首先,我认为我的集合是小的,但是这个经过的时间应该作为长值传递。
// times-collection will be initialised somewhere else
//---------------------------------------------------------------
for (int i=0; i<10; i++){
final StopWatch stopwatchA = new StopWatch();
final StopWatch stopwatchB = new StopWatch();
Iterator<String> iterator = times.iterator();
stopwatchA.start();
while(iterator.hasNext()){
if (iterator.next().equals("XXX")) {
break;
}
}
stopwatchA.stop();
stopwatchB.start();
for (String tzd : times) {
if (tzd.equals("XXX")) {
break;
}
}
stopwatchB.stop();
if(stopwatchA.getTime() < stopwatchB.getTime()){
System.out.println("ITERATOR IS FASTER: iterator: " + estimatedTimeIterator + " FOR-TIME: " + estimatedTimeFor);
}else if(stopwatchA.getTime() > stopwatchB.getTime()){
System.out.println("FOR IS FASTER: iterator: " + estimatedTimeIterator + " FOR-TIME: " + estimatedTimeFor);
}
} 发布于 2016-11-28 11:46:04
标准库中的秒表在内部使用System.currentTimeMillis()来处理有115个条目的集合,在stopwatchA.start()和stopwatchA.stop()之间使用System.nanoTime()是完全可能的。
https://stackoverflow.com/questions/40843214
复制相似问题