if语句里面有多个并列条件时,这两种写法是不是第二种效率更高,哪种风格好?

whoamiwho 2013-01-22 12:32:37
f1(),f2(),f3()都是bool类型的函数,我现在要下面三个都成立才执行do(),下面哪种风格比较好?
A .if(f1()&&f2()&&f3()) do();
B.if(f1())
if(f2())
if(f3))
do();

如果我3个函数执行时间都比较长,是不是第二个比较好还是A方法就相当于B方法??
...全文
15273 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2013-01-23
  • 打赏
  • 举报
回复
f1,f2,f3的命中率与顺序对效率有影响
种草德鲁伊 2013-01-22
  • 打赏
  • 举报
回复
引用 2 楼 whoamiwho 的回复:
引用 1 楼 KarasCanvas 的回复:and是一样的,要全部执行才能进行判断,or遇到第一个true后面就不会执行了 and 遇到第一个false后面就不会执行了,没有这个功能??
有,上面是睡迷糊了说错的
whoamiwho 2013-01-22
  • 打赏
  • 举报
回复
引用 1 楼 KarasCanvas 的回复:
and是一样的,要全部执行才能进行判断,or遇到第一个true后面就不会执行了
and 遇到第一个false后面就不会执行了,没有这个功能??
种草德鲁伊 2013-01-22
  • 打赏
  • 举报
回复
and是一样的,要全部执行才能进行判断,or遇到第一个true后面就不会执行了
xieliming1011 2013-01-22
  • 打赏
  • 举报
回复
收获很多,继续加油
whoamiwho 2013-01-22
  • 打赏
  • 举报
回复
引用 8 楼 laviewpbt 的回复:
两种写法的结果是不是一样,要看具体的语言,比如对于VB6来说,第二种写法的执行效率就要高些,而对于C#来说,效率是一样的,因为C#的&&是短路运算符,从两种写法的反汇编代码来看,对应的汇编码也是一样的。 我觉得第一种写法更简洁些。 如果f1,f2,f3三个函数的执行速度有差别,建议将执行最快的放在最前面,比如 如果执行速度 f3>f1>f2,……
这么说if里面3个并列条件,写的顺序还是有会影响性能的判断
whoamiwho 2013-01-22
  • 打赏
  • 举报
回复
引用 5 楼 findcaiyzh 的回复:
除非特别特别特别注意performance的地方,这种地方不会是性能瓶颈的。 因此,一般都看哪种可读性最好。 我觉得前者更好点。
循环判断就有可能是瓶颈了
assky124 2013-01-22
  • 打赏
  • 举报
回复
如果 B 下面的没有其他的else分支的话,显然选A,可读性好
laviewpbt 2013-01-22
  • 打赏
  • 举报
回复
两种写法的结果是不是一样,要看具体的语言,比如对于VB6来说,第二种写法的执行效率就要高些,而对于C#来说,效率是一样的,因为C#的&&是短路运算符,从两种写法的反汇编代码来看,对应的汇编码也是一样的。 我觉得第一种写法更简洁些。 如果f1,f2,f3三个函数的执行速度有差别,建议将执行最快的放在最前面,比如 如果执行速度 f3>f1>f2,则比较优化的方式是 : .if(f3()&&f1()&&f2()) do();
  • 打赏
  • 举报
回复
一样的。。。。第一种代码简洁点
  • 打赏
  • 举报
回复
都一样,我一般用第一种。
宝_爸 2013-01-22
  • 打赏
  • 举报
回复
除非特别特别特别注意performance的地方,这种地方不会是性能瓶颈的。 因此,一般都看哪种可读性最好。 我觉得前者更好点。
threenewbee 2013-01-22
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390332540?page=1#post-393345808
ainibupa 2013-01-22
  • 打赏
  • 举报
回复
引用 3 楼 KarasCanvas 的回复:
引用 2 楼 whoamiwho 的回复: 引用 1 楼 KarasCanvas 的回复:and是一样的,要全部执行才能进行判断,or遇到第一个true后面就不会执行了 and 遇到第一个false后面就不会执行了,没有这个功能?? 有,上面是睡迷糊了说错的
他说的是&&和||两种情况~~你还没睡醒~鉴定完毕~! ||的话,尽可能将容易为FALSE的写在前面。其实楼主说的两种写法无论是&&还是||都是一样。没什么区别。个人风格不一样而已

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧