编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
来源:互联网 发布:五年级上册优化答案 编辑:程序博客网 时间:2024/04/29 11:00
尺有所短,寸有所长,每种处理器都有自己擅长与不擅长的操作。
在与处理器配套发布的指令集手册中,都会描述每个指令的执行周期,单周期指令是处理器最喜欢的,不仅执行时间短,而且利于流水线执行。加、减、逻辑运算等,常常是单周期指令,乘、除、分支指令、浮点指令、内存存取操作等,常常需要较多的时钟周期。我们在编程时,就应该少使用执行时间长的指令。
Q:这些复杂指令都有它的用途,说少用就能少用的吗?
A:茴香豆的‘茴’字都有4种写法,更何况是号称艺术的软件,很多时候,我们只需要稍微变通一下,就可以化腐朽为神奇。正所谓,条条大路通罗马,不过代价各不同。
编程是门艺术
6.3.1 少用乘法
定点乘法在DSP中需要两个Cycle,而移位操作只要1个Cycle,如果是一个数乘以2的N次方,就可以用移位代替乘法。例如:
len = len*4;
改为下面的写法更好:
len = len <<2;
6.3.2 少用除法、求余
除法、求余需要消耗大量的时间,很多处理器没有相应的指令,是通过软件来实现的,应尽量少用。如果要除以一个常数,如下面的浮点除法:
f = f /5.0;
可以将它转换为乘法:
#define cof 1.0/5
f = f * cof;
1 0
- 编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 编写高效代码(9) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 连载:编写高效代码(9) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 不要做不擅长的事情
- 连载:编写高效代码(7) 减少函数调用——不要老打断我
- 编写高效代码(7) 减少函数调用——不要老打断我
- 编写高效代码(1) 减少函数调用——不要老打断我
- 编写高效代码(1) 减少函数调用——不要老打断我
- 我不喜欢我的代码
- 我很懒,不喜欢写Blog,好像有忙不完的事情
- 我将要做的事情
- 我应该做的事情
- 我擅长的?
- 写代码始终是我最喜欢做的事情...
- 让我们做擅长的事情吧!
- 扬长避短,做自己最擅长的事情
- 我喜欢的&不喜欢的
- [企业管理]领路与殉葬——我正在做的事情和我的野心
- Git使用简介
- 编写高效代码(2) 空间换时间——我们总是在走,却忘了停留
- 没做!
- 优先队列
- c语言 蓝欧版 分支结构练习(9题)
- 编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 小米研发工程师笔试卷A
- c实现带表头的单链表的创建、测长及打印
- 编写高效代码(4) 在精度允许的条件下,将浮点数定点化
- hdu-1540(线段树+最大连续区间)
- 生成字典序全排列
- 第十三章 网络命名空间(内核源码实现)--基于Linux3.10
- 编写高效代码(5) 尽量减少分支
- 编写高效代码(7) 优化内存访问——别让包袱拖垮了你