某次听数字图像的老师说到关于ifelse其实也是蛮消耗资源的,关键就在于,我们的编译器在编译的时候要去维护一张table。而问号表达式其实也可以和ifelse做替换的。无聊之下就想来瞧瞧。效率对比 :wink:
有啥缺陷,请指正。
//标准的ifelse方式
public static long standardIfElseTest(long L) {
if (L < 10)
return L * 100;
else
return L * 10;
}
//问号表达式
public static long ternaryIfElseTest(long L) {
return L < 10 ? L * 100 : L * 10;
}
//main方式测试一下
public static void main(String[] args) {
long start;
long end;
// 计算第一个方法运行时间:标准的if、else方式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
standardIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("standard if else:" + ((long) end - start));
// 重新计算第二个方法时间:问号表达式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
ternaryIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("question:" + ((long) end - start));
}
运行数据:
1285046936531
standard if else:7625
1285046944156
question:6594
两个方法的执行其实是会多少变化的。些微变化取决于运行时候和内存的情况。
不过standard和question的大小还是明显在1000以上的差异,也就是1s,second
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10647.html