4629|8

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

C程序优化的问题 [复制链接]

本帖最后由 dontium 于 2015-1-23 13:27 编辑

我最近写好了一个工程,程序也都调通了,不过实时性达不到要求,所以在编译时我选择了优化级别。很奇怪,我选择O3和O2时,程序运行的结果是错误的,而用O1级时就OK了,但是O1级还是满足不了我的实时性要求。
所以想问一下大家这是怎么回事呢,应该检查哪部分呢,谢谢,感激之~~

最新回复

我现在也遇到了同样的问题,确实是o3,o2就有问题,o1就好,但是速度跟不上,现在打算自己把关键的函数写汇编,再去学习楼上说的VOLATILE变量测试方法。 先去看看o1,o2,o3的区别。  详情 回复 发表于 2011-8-15 15:45
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没人碰到过吗?自己顶一个~~
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
能讲一讲优化的规则吗?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
我的程序情况大致是这样的:程序包括发送和接收模块,接收模块又细分为接收的物理层模块和解码模块(上层模块)。发送模块单独测试时用O3优化级OK的,J接收的解码部分单独测试时用O3模块也OK的,然后,整个程序合起来用O3就不行(但O1行),这就可以肯定问题出在接收部分的物理层部分。但是,我看参考书上讲的O3和O1的区别,真的找不到接收物理层模块关于这方面的问题所在啊,觉得按照书上讲的,应该是O3和O1都不会有问题的呀,郁闷中。。。希望得到有这方面经验的高手们指点~~
 
 
 

回复

116

帖子

0

TA的资源

一粒金砂(中级)

5
 
我的那个工程用O3去build没问题,就是程序RUN的时候不是我所要的结果,觉得程序在乱跳,况且设断点时看某个变量时,该变量在程序中的取值不会在0-10范围内,结果断点时见它为1000多的一个数,觉得很奇怪。到底是怎么回事呢?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
使用03,02优化容易出问题,编译完成以后使用MIX模式看一下程序,有的语句可能就被优化掉了。在关键变量使用VOLATILE变量试一下。O3,O2优化的速度还是很快的,我还是喜欢用,编译的时候注意一些旧好了。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

7
 
在关键变量使用VOLATILE变量,产生反汇编代码,感觉存在的问题的地方对照反汇编代码看。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
呵呵,不错不错,按照上面几位老兄的指点,果然把这问题搞定了....呵呵,O3真的是快啊,呵呵!谢谢各位的指点啊,也欢迎大家一起交流~~
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

9
 
我现在也遇到了同样的问题,确实是o3,o2就有问题,o1就好,但是速度跟不上,现在打算自己把关键的函数写汇编,再去学习楼上说的VOLATILE变量测试方法。

先去看看o1,o2,o3的区别。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表