免费注册 查看新帖 |

Chinaunix

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

[C] 程序执行效率问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-26 17:24 |只看该作者 |倒序浏览
在多重循环中,把最忙的循环放在最外层,程序效率提高吗?

论坛徽章:
0
2 [报告]
发表于 2013-09-26 21:14 |只看该作者
个人理解:

1、当今GCC用最高级别编译选项,已经优化到接近极致了。

2、CPU执行指令的时候,是带预测执行的,循环也是分支的一种罢了,注意你的代码逻辑,尽量让编译器预测对即可。

3、纯粹的理论中,是最忙的放外面还是里面,欢迎讨论,个人已经想不清楚了,哈哈。

另:多重循环是几重?个人感觉一般工程中我尽量做到2层以下,不得已做到3层。如果循环到3层至以上,是否考虑该优化你的代码了?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2013-09-27 11:48 |只看该作者
这种优化估计你是看不到多少进步, 扣的太细了.

如果楼主正在做优化, 应该用Profile工具去剖析程序的性能瓶颈, 盲目的改进毫无意义, 你猜测的地方80%是错误的, 经验之谈.

论坛徽章:
0
4 [报告]
发表于 2013-09-27 16:19 |只看该作者
回复 3# linux_c_py_php
什么是Profile工具?是开源软件码?
我是在公司的编码规范理看到一条说:在多重循环中,不应将最忙的循环放在最外层。
但我做了个实验,三重for循环,一个for循环(1024*1024*1024)次,另外两个循环为(1024)次。我用time查看程序运行时间,执行十多次结果都是放在最外层时程序运行时间短。


   

论坛徽章:
0
5 [报告]
发表于 2013-09-27 16:55 |只看该作者
top free vmstat iostat  mpstat sar valgrind 以及各语言或者框架支持的profile工具和压力测试工具
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP