实时软件编程问题
来源:互联网 发布:洛阳师范网络 编辑:程序博客网 时间:2024/05/29 16:37
实时控制系统编程问题
>>编程语言区别于一般计算机的C语言编译器
单片机中的C 语言编译器提供多级代码优化, 以提高编译效率。
但是仅仅利用编译器的自动优化功能, 还不能很好地满足系统的
实时性要求。因此, 为了更好地提高嵌入式软件的实时性, 结合软
件的开发,应该采用手工代码优化的方法。
>>函数宏定义代替函数调用
函数调用是使用系统的堆栈来保存数据的,函数在调用的时候
还要保存和恢复当前的现场, 进行压栈和出栈的操作。对于调用频
率不高的函数, 可以通过减少函数参数个数来减少参数传递的时间。
在不影响程序的模块化和函数的可重入的情况下, 也可以用全局变
量来代替函数的参数传递。
而对于调用频率很高的函数,就可以用函数宏定义来代替,因为宏
定义函数只是在编译之前作为预先的写好代码替换当前代码,完成的
仅仅是字符串的替换,用空间换取了时间。这样代码执行效率提高的
效果将尤其突出明显。
>>位运算代替数学运算
通过移位进行2的整数次幂的乘除法与直接进行乘除法两者在逻辑上完
全相同, 但是前者在运行速度上远远快于后者。
全相同, 但是前者在运行速度上远远快于后者。
除移位以外,位运算还能对char或int中的位进行测试、置位等操作,
如上面中提到的宏定义位操作函数。因此位运算很好地改善了数学运
算的效率。
如上面中提到的宏定义位操作函数。因此位运算很好地改善了数学运
算的效率。
>>if 语句和switch 语句
在if的条件语句的判别中, 将可能性最大的条件放在最前面进行判断。
在条件判断语句中若还存在逻辑表达式, 可以把发生概率最大的条件判
断放在最前面,这样可以节约判断整个条件真假的时间,以此提高运
算速率。
断放在最前面,这样可以节约判断整个条件真假的时间,以此提高运
算速率。
switch 是一个分支选择语句, 可根据具体的情况按照各分支发生的相对
频率排序。即把最可能发生的情况放在第一位,最不可能的情况放在
最后,这样将节省大量的判断匹配的时间,提高程序的效率。
频率排序。即把最可能发生的情况放在第一位,最不可能的情况放在
最后,这样将节省大量的判断匹配的时间,提高程序的效率。
>>循环处理
主要是将循环体内不变的部分提到循环体外(如一些与循环变量无关
的运算和操作)来减少不必要的重复计算,从而降低循环体内程序运
行的强度。
的运算和操作)来减少不必要的重复计算,从而降低循环体内程序运
行的强度。
另外,也可以在循环体内运用上述的若干种代码优化方法来实现循环
体内运行强度的降低。
体内运行强度的降低。
0 0
- 实时软件编程问题
- 关于实时监控软件需要注意的几个编程要点
- 实时编程
- EM2040D采集软件SIS中grid实时显示问题(二)
- 软件编程的一些问题
- 关于软件编程的问题
- 编程软件一些配置问题
- igenuz实时软件高知
- igenuz实时软件高知
- EM2040D多波束采集软件SIS关于grid实时显示问题
- EM2040D数据采集软件SIS使用过程中图像实时显示问题(三)
- 实时快照、恢复软件下载
- 免费的实时监测软件
- 实时聊天软件常用架构
- 实时软件的可靠性设计
- NADetector实时流量监控软件
- C#实时入库问题
- 实时操作系统延时问题
- const char*, char const*, char*const的区别
- Spark 中的RDD是个什么鬼,我们为什么需要它?
- Java线程安全总结
- Java 并发包中的读写锁及其实现分析
- AndroidL 音频文件编译过程
- 实时软件编程问题
- OpenEmbedded 入门 (一):OpenEmbedded 简介
- 玩转Visual Studio-多工程开发
- C++默认参数在声明还是定义确定?
- UWP开发之StreamSocket聊天室 (一)
- Android支付宝和友盟推送SDK编译冲突Unable to execute dex: Multiple dex files define Lcom/ta/utdid2/
- 从”JAVA“而终 3 :配置java运行环境以及Myeclipse的安装
- unity制作斗地主游戏大致流程
- IOS修复两个导航栏状态不一致导致跳转时,导航栏黑底的问题