我想知道以下两个代码块是否存在性能差异
1>
if(name == null) {
//something
}
if(name != null) {
//something
}
Run Code Online (Sandbox Code Playgroud)
和
2>
if(name == null) {
//something
}
else {
//something
}
Run Code Online (Sandbox Code Playgroud)
第一个比较两次,第二个比较一次.差异不会明显,但它就在那里.
在基准测试后,它在100.000.000次迭代中,第一次执行成本为719ms,第二次执行成本为703ms.
我使用了模数,因此条件必须在每个转弯处改变并避免预编译结果.请在下面找到代码.我注意到,当迭代次数增加时,这个间隙会减少.
public static void main(String[] args) {
Date start1 = new Date();
for(int i=0; i<100000000; i++) {
int it = i%2;
if(it == 0) {
double j = Math.random();
j++;
}
if(it != 0) {
double j = Math.random();
j++;
}
}
Date end1 = new Date();
Date start2 = new Date();
for(int i=0; i<10000000; i++) {
int it = i%2;
if(it == 0) {
double j = Math.random();
j++;
} else {
double j = Math.random();
j++;
}
}
Date end2 = new Date();
System.out.println((end1.getTime()-start1.getTime())+" / "+(end2.getTime()-start2.getTime()));
}
Run Code Online (Sandbox Code Playgroud)