测量对象实例化

时间:2011-08-08 20:39:13

标签: java

我希望测量在java中实例化对象所花费的时间。我不能在Eclipse中使用分析工具,因为它不适合我 - 我得到一个讨厌的错误。是否可以手动测量时间?我有以下

    for (int i=0; i<1000; i++) {
        long endTime;
        long startTime = System.nanoTime();
        MyObj obj = new MyObj();
        endTime = System.nanoTime();
        System.out.println("Instantiation time: " + (endTime - startTime));
    }

然而,问题在于它只是一直返回0。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

而是使用System.nanoTime() - 您将获得更高的精确度(如果您的VM和硬件支持它)。

答案 1 :(得分:1)

我认为实例化一个对象真的非常快。为什么不尝试在循环中实例化一百万个对象,然后将总时间除以一百万。您可能会获得更多可用的数字。

public class TimeTest {
    private final int LOOPCOUNT = 100000;

    @Test
    public void CreateObj() {                       
        long endTime;
        long startTime = System.nanoTime();     
        for (int i=0; i<LOOPCOUNT; i++) {
            MyObj obj = new MyObj();
        }
        endTime = System.nanoTime();
        System.out.println("Total loop time      : " + (endTime - startTime) + "ns");
        System.out.println("Avg single loop time : " + (endTime - startTime) / LOOPCOUNT + "ns");
    }

    class MyObj {       
    }   
}

在我的机器上,我得到:

Total loop time      : 2341515ns
Avg single loop time : 23ns

正如@bdares指出的那样,您可以测量循环运行的时间,然后从总循环时间中减去它以获得更准确的数字。