我希望测量在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。有什么建议吗?
答案 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指出的那样,您可以测量循环运行的时间,然后从总循环时间中减去它以获得更准确的数字。