Collection 用秒表测试
Collection Test with StopWatch
我正在尝试测量包含 115 个项目的 collection 的运行时间。
我的问题是我只能在调试时测量经过的时间,并使用 StopWatch.stop();
准确设置断点
当我 运行 我的测试正常时 StopWatch.stop
的值是 0
,尽管它是 long-value。首先我认为我的 collection 太小了,但这个经过的时间应该作为 long-value.
传递
// 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);
}
}
内部使用标准库中的秒表 System.currentTimeMillis()
对于包含 115 个项目的集合,stopwatchA.start() 和 stopwatchA.stop() 之间的时间完全有可能小于 1 毫秒
请改用 System.nanoTime()。
我正在尝试测量包含 115 个项目的 collection 的运行时间。
我的问题是我只能在调试时测量经过的时间,并使用 StopWatch.stop();
准确设置断点
当我 运行 我的测试正常时 StopWatch.stop
的值是 0
,尽管它是 long-value。首先我认为我的 collection 太小了,但这个经过的时间应该作为 long-value.
// 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);
}
}
内部使用标准库中的秒表 System.currentTimeMillis() 对于包含 115 个项目的集合,stopwatchA.start() 和 stopwatchA.stop() 之间的时间完全有可能小于 1 毫秒 请改用 System.nanoTime()。