连载:编写高效代码(7) 减少函数调用——不要老打断我
来源:互联网 发布:中国电信网络测速112 编辑:程序博客网 时间:2024/06/04 18:47
函数是结构化程序设计的产物,它使代码更加模块化,耦合性更低,重用性更高。不过,函数调用会带来额外的开销,除了引起跳转外,还会产生额外的指令。
人都有这样的经验,做一件事情时,如果被人打断,重新再回来做这件事情,就需要一段恢复时间,如果老是被打断,那事情就没法做了。函数调用也是这样,要进行参数压栈出栈、寄存器保存、指令跳转等。多个步骤如果程序的性能要求较高,就可以将一些小的函数直接转换成代码。
1.将小函数直接写成语句
下面这个求最小值的函数,可以直接用函数的内容替换函数调用。
int min(int a, int b){ return a<b? a: b;}c = min(a, b);//直接写为c = a<b? a: b;
2.将小函数写成宏
如果调用的地方很多,用函数调用的方式会显得代码简洁。一种即保持代码简洁又能减少函数调用的做法是将函数体声明为宏。
#define min(a,b) ((a)<(b)) ? (a) : (b)c = min(a,b);
3.将函数声明为内联函数
如果嫌改为宏的方法太麻烦,还有一种简单的方法,就是将函数声明为inline,编译器会自动用函数体覆盖函数调用。
inline int min(int a, int b){ return a<b? a: b;}c = min(a, b);//编译器会将代码优化成c = a<b? a: b;
本文节选自《大话处理器》第6章。
一台电脑要真正做到优秀,它的硬件和软件是必须紧密联系在一起的。——乔布斯
作者微博: weibo.com/muxiqingyang
- 连载:编写高效代码(7) 减少函数调用——不要老打断我
- 编写高效代码(7) 减少函数调用——不要老打断我
- 编写高效代码(1) 减少函数调用——不要老打断我
- 编写高效代码(1) 减少函数调用——不要老打断我
- 连载:编写高效代码(9) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 编写高效代码(9) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 连载:编写高效代码(11) 尽量减少分支
- 连载:编写高效代码(1)—编写高效代码的意义
- 连载:编写高效代码(6)——降低数据精度
- 连载:编写高效代码(2)——代码剖析,没有调查,就没有发言权
- 编写高效代码(11) 尽量减少分支
- 编写高效代码(5) 尽量减少分支
- 连载:编写高效代码(3)——使用更快的算法
- 连载:编写高效代码(5)——选用合适的指令
- 连载:编写高效代码(12) 优化内存访问——别让包袱拖垮了你
- 连载:编写高效代码(4)—算法领域的牛人们
- 连载:编写高效代码(8) 空间换时间——我们总是在走,却忘了停留
- 使用第三方JAR包的一点经验
- 哈哈,我的博客开张来了
- 第十四周 第五天(做项目)
- C/C++:遍历子目录,枚举文件,FindFirstFile + FindNextFile
- select 模型详解
- 连载:编写高效代码(7) 减少函数调用——不要老打断我
- word2007禁用自动拼写和语法检查
- Hibernate环境的搭建
- Linux下查看进程打开的文件句柄数
- String类的实现
- svn命令与svn杂谈
- 第十五周 第一天
- Hibernate原理与应用
- vim切换字母大小写