免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: system888net
打印 上一主题 下一主题

两段完成同样功能的简单C代码 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2009-03-16 18:20 |只看该作者
switch 〉if

论坛徽章:
0
72 [报告]
发表于 2009-03-20 16:44 |只看该作者
个人觉得可以采用如下方式:
int r[4] = {0, 1, 6, 2, 8} ;
if (x >= 0 && x<= 4){
    y = r[x] ;
} else {
    y = f(x) ;
}

论坛徽章:
0
73 [报告]
发表于 2009-03-20 16:50 |只看该作者
switch 快,楼主 可以查 Computer Systems A Programmer’s Perspective 这本书,里面有具体的分析

论坛徽章:
0
74 [报告]
发表于 2009-03-23 12:48 |只看该作者
学习中

论坛徽章:
0
75 [报告]
发表于 2009-07-16 19:10 |只看该作者
赶紧写个映射表吧。

论坛徽章:
0
76 [报告]
发表于 2009-07-16 19:17 |只看该作者
明显用switch要比if快很多

论坛徽章:
0
77 [报告]
发表于 2009-07-17 07:04 |只看该作者
都不好啊,用映射表吧

论坛徽章:
0
78 [报告]
发表于 2010-01-25 21:16 |只看该作者
第一个会很快,第二个会很慢!!你反汇编一下 ok?

论坛徽章:
0
79 [报告]
发表于 2010-01-26 11:55 |只看该作者
switch 语句视情况会被编译成 表驱动型或if语句2分法型 .

表驱动不一定就快,事实上很难单纯地比较哪一种快 , 这个要看具体的应用.

表驱动的好处是比较的时间是常数.

论坛徽章:
0
80 [报告]
发表于 2010-01-26 12:01 |只看该作者
表驱动的坏处是cpu(貌似)没法做分支预测.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP