| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C代码优化技巧 -> 正文阅读 |
|
[C++知识库]C代码优化技巧 |
指针与数组选择一种合适的数据结构很重要。
数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。
在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样
指针方法的优点是,array的地址每次装入地址p后,在每次循环中只需对p增量操作。在数组索引方法中,每次循环中都必须根据t值求数组下标的复杂运算。 尽量使用小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;
在ICCAVR中,可以在Options中设定使用printf参数,尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符)。
减少运算的强度查表法尽量不要在自己的主循环里搞什么运算工作,先计算好了,再到循环里查表。
如果表很大,不好写,就写一个init函数,在循环外临时生成表格。 求余优化求余运算
可以改为:
平方优化
可以改为:
在有内置硬件乘法器的单片机中(如51系列),乘法运算比求平方运算快得多
如果是求3次方,如:
更改为:
则效率的改善更明显。 整数整除法优化对于整数乘除法,可以用移位实现乘除法运算
可以改为:
通常如果需要乘以或除以2n,都可以用移位的方法代替。
实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果,如:
可以改为:
采用运算量更小的表达式替换原来的表达式,下面是一个经典例子: 旧代码:
新代码:
整数除法是整数运算中最慢的,所以应该尽可能避免。一种可能减少整数除法的地方是连除,这里除法可以由乘法代替。
不好的代码:
推荐的代码:
整数加减法优化在使用到加一和减一操作时尽量使用增量和减量操作符。
新代码:
使用复合赋值表达式(如a-=1及a+=1等),也能够生成高质量的程序代码。 表达式优化在某些情况下,C++编译器不能从浮点表达式中提出公共的子表达式,因为这意味着相当于对表达式重新排序。需要特别指出的是,编译器在提取公共子表达式前不能按照代数的等价关系重新安排表达式。这时,程序员要手动地提出公共的子表达式
不好的代码:
推荐的代码:
不好的代码:
推荐的代码:
更多参考:C代码优化方案 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:39:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |