免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6841 | 回复: 19
打印 上一主题 下一主题

请教大虾们,一个程序效率问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-29 18:20 |只看该作者 |倒序浏览
在程序分支语句中
第一种,用多个if.....else if......可以实现分支.
第二种,用switch ,....case... 也可以实现.
这两种到底谁的效率高?请大虾们指教.
我个人觉得第二种,效率高.不知道是否有其他的意见.

论坛徽章:
0
2 [报告]
发表于 2008-02-29 18:27 |只看该作者
现代编译器可以自动判断这种结构了,会生成最合适的代码。
编码人员不需要考虑这种细枝末节,精力应该放在程序安全性、健壮性和可维护性上。

论坛徽章:
0
3 [报告]
发表于 2008-02-29 19:30 |只看该作者
顶二楼

论坛徽章:
0
4 [报告]
发表于 2008-03-01 12:44 |只看该作者
原帖由 liaoweijun 于 2008-2-29 18:20 发表
在程序分支语句中
第一种,用多个if.....else if......可以实现分支.
第二种,用switch ,....case... 也可以实现.
这两种到底谁的效率高?请大虾们指教.
我个人觉得第二种,效率高.不知道是否有其他的意见.

在x86架构上,如果分支多,应该用switch,编译器采用跳转表这种高效率结构。
但在很多其它平台上,很多情况下,switch就是用if …… else if实现的,所以两者一样。
但无论那种,这点开销不影响效率

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2008-03-01 13:33 |只看该作者
能够多相信自己的地方多相信相信自己,不是每一种编译器都优化的那么好的。
很烂的又不得不用的编译器我见的多了,hoho
我支持自己在代码里多注意注意,多做做优化。(这些细节方面或许并不会浪费你多少时间)

论坛徽章:
0
6 [报告]
发表于 2008-03-01 19:07 |只看该作者
谢谢各位的指点!

论坛徽章:
0
7 [报告]
发表于 2008-08-13 23:18 |只看该作者
第二种,效率高

第一种要多次判断,所以会使效率降低

论坛徽章:
0
8 [报告]
发表于 2008-08-13 23:23 |只看该作者
小于三个分支时两者一样,大于三个时switch用跳转表性能要高一点.各个编译器实现可能不同,写代码不用过于关心.^_^
tomken 该用户已被删除
9 [报告]
发表于 2008-08-14 00:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2008-08-14 09:03 |只看该作者
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP