我正在使用这段小代码来测试哪种方法更快:
public void test() {
long start = System.currentTimeMillis();
MyDate date = new MyDate();
int max = 5000;
for (int i = 0; i < max; i++) {
Calendar.getInstance().getTimeInMillis(); // <--
}
System.out.println("Calendar instance delay: " + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
for (int i = 0; i < max; i++) {
date.getMillis(); // <--
}
System.out.println("My date delay: " + (System.currentTimeMillis() - start));
}
所以,基本上,我试图比较 和 之间的性能Calendar.getInstance().getTimeInMillis()
(MyDate.getMillis()
MyDate 是我创建的一个类)。
好吧,当我运行上面的代码时,输出是:
Calendar instance delay: 413
My date delay: 2
但是,当我颠倒订单时(首先称为 MyDate,在 Calendar 之后),我得到:
My date delay: 247
Calendar instance delay: 119
我尝试使用System.nanoTime()
,但发生了同样的事情:要测试的第一个代码是花费更长时间的代码。
任何人都知道为什么会发生这种差异?或者,有没有一种方法可以在不使用外部分析器应用程序(只是纯 Java 代码)的情况下准确地分析代码?
谢谢。