考虑这个代码片段
import java.util.Date;
class Test {
public static void main(String[] args) {
Date date = null;
long startTime = System.currentTimeMillis();
if(date == null) {
System.out.println("null == date");
}else {
System.out.println("date found "+date);
}
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
System.out.println(elapsedTime);
}
}
在我使用 date==null 的情况下,我想知道如果我选择写 null==date 是否会降低时间复杂度,反之亦然
PS-对于这两种情况,我的代码都产生0的输出,但是如果代码很复杂并且操作繁重怎么办?
date == null
和null == date
几乎完全相同。
在您的特定情况下,它们之间在速度和观察到的行为方面都没有区别。
你得到了0
,因为现代计算机非常快,执行该计算所需的时间不到毫秒。
PS:如果你真的想测量它需要多长时间,你必须执行它数十万次,并将测量的时间除以执行计数。
PPS:在Java中,微基准测试并不容易,因为你已经考虑了很多东西,比如JVM内部行为,编译器优化,GC,JIT等等。
编辑我错了它们是完全等效的,因为此代码将被编译为使用IFNONNULL
指令。