使用StopWatch进行集合测试

时间:2016-11-28 11:28:07

标签: java collections stopwatch

我试图用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);
    }
}   

1 个答案:

答案 0 :(得分:1)

标准库中的秒表在内部使用System.currentTimeMillis() 对于包含115个项目的集合,完全可以在stopwatchA.start()和stopwatchA.stop()之间少于1毫秒 改为使用System.nanoTime()。