问号表达式和if-else方式的对比[亲测有效]

问号表达式和if-else方式的对比[亲测有效]某次听数字图像的老师说到关于ifelse其实也是蛮消耗资源的,关键就在于,我们的编译器在编译的时候要去维护一张table。而问号表达式其实也可以和ifelse做替换的。无聊之下就想来瞧瞧。效率对比:wink:有啥缺陷,请指正。[code="java"]//标准的ifelse方式publicstaticlongstandardIfElseTest(longL){…

某次听数字图像的老师说到关于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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注