免费注册 查看新帖 |

Chinaunix

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

switch的一个用法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-11-11 14:04 |只看该作者
本帖最后由 幻の上帝 于 2010-11-11 14:06 编辑

找到一个类似的……

  1. template <class Pod, class T>
  2.     inline void pod_fill(Pod* b, Pod* e, T c)
  3.     {
  4.         switch ((e - b) & 7)
  5.         {
  6.         case 0:
  7.             while (b != e)
  8.             {
  9.                 *b = c; ++b;
  10.         case 7: *b = c; ++b;
  11.         case 6: *b = c; ++b;
  12.         case 5: *b = c; ++b;
  13.         case 4: *b = c; ++b;
  14.         case 3: *b = c; ++b;
  15.         case 2: *b = c; ++b;
  16.         case 1: *b = c; ++b;
  17.             }
  18.         }
  19.     }
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
12 [报告]
发表于 2010-11-11 14:13 |只看该作者
如此混乱的代码……

论坛徽章:
0
13 [报告]
发表于 2010-11-11 14:17 |只看该作者
回复 12# cjaizss


   可读性和效率都很好,为什么说混乱呢,可否解释下?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
14 [报告]
发表于 2010-11-11 14:42 |只看该作者
回复  cjaizss


   可读性和效率都很好,为什么说混乱呢,可否解释下?
scopengl 发表于 2010-11-11 14:17



    没觉得可读性好

论坛徽章:
0
15 [报告]
发表于 2010-11-11 15:20 |只看该作者
回复 14# cjaizss
能否给一个你所谓可读性比较比较好的另外一个实现呢?
它里面只是利用switch的特性而已,如果对switch理解不够的话,是会觉得难懂,但是不代表可读性差,所以我不赞同你的观点,除非你给一个更好的实现.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
16 [报告]
发表于 2010-11-11 15:36 |只看该作者
回复  cjaizss
能否给一个你所谓可读性比较比较好的另外一个实现呢?
它里面只是利用switch的特性而已,如 ...
scopengl 发表于 2010-11-11 15:20



    你见过还这样的加循环的吗?已经超出了我们日常习惯性代码的范围了.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
17 [报告]
发表于 2010-11-11 15:40 |只看该作者
你见过还这样的加循环的吗?已经超出了我们日常习惯性代码的范围了.
cjaizss 发表于 2010-11-11 15:36



    依我对C语言的熟悉,我看到这样的代码一开始就楞了一下,因为似乎从未见过,过了一会才明白它的意思.我想,这样的代码,我至少是不希望出现在我做的项目中.

论坛徽章:
0
18 [报告]
发表于 2010-11-11 15:48 |只看该作者
太复杂了

论坛徽章:
0
19 [报告]
发表于 2010-11-11 15:58 |只看该作者
循环展开和软件流水的一种写法吧,把对齐到边界的操作和展开主体部分写到一起了,还是会比较实用,能少写不少冗余的内容。这段代码应该是核心部分,不然没必要这么追性能。

论坛徽章:
0
20 [报告]
发表于 2010-11-11 19:38 |只看该作者
还是有用处的,当N足够大时,性能能提高5-20%(我以前测试过的一个例子),跟DST对象的大小有关,DST大了作用就不大了,8也是个比较合理的值
不过不要迷信这玩意,都C++了,想不出来qt能有什么核心函数需要   平均  一秒运行数千次。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP