谁比较熟悉函数优化啊

[复制链接]
2015|34
 楼主| dengdc 发表于 2017-11-12 11:01 | 显示全部楼层 |阅读模式
谁比较熟悉函数优化啊
shimx 发表于 2017-11-12 11:03 | 显示全部楼层

Inline函数

在 C++ 中,关键字 Inline 可以被加入到任何函数的声明中。 这个关键字请求编译器用函数内部的代码替换所有对于指出的函数的调用。
yszong 发表于 2017-11-12 11:05 | 显示全部楼层
这样做在两个方面快于函数调用:第一,省去了调用指令需要的执行时间;第二,省去了传递变元和传递过程需要的时间。
jiaxw 发表于 2017-11-12 11:07 | 显示全部楼层
但是使用这种方法在优化程序速度的同时,程序长度变大了,因此需要更多的 ROM 。
spark周 发表于 2017-11-12 11:09 | 显示全部楼层
使用这种优化在 Inline 函数频繁调用并且只包含几行代码的时候是最有效的。
liliang9554 发表于 2017-11-12 11:11 | 显示全部楼层
不定义不使用的返回值
午夜粪车 发表于 2017-11-12 11:12 | 显示全部楼层
对,函数定义并不知道函数返回值是否被使用,假如返回值从来不会被用到,应该使用 void 来明确声明函数不返回任何值。
yszong 发表于 2017-11-12 11:14 | 显示全部楼层

减少函数调用参数
heweibig 发表于 2017-11-12 11:17 | 显示全部楼层
嗯,使用 全局变量 比函数传递参数更加有效率。这样做去除了函数调用参数入栈和函数完成后参数出栈所需要的时间。
heweibig 发表于 2017-11-12 11:19 | 显示全部楼层

然而决定使用全局变量会影响程序的模块化和重入,故要慎重使用。
zhaoxqi 发表于 2017-11-12 11:21 | 显示全部楼层
所有函数都应该有原型定义
zhaoxqi 发表于 2017-11-12 11:24 | 显示全部楼层

一般来说,所有函数都应该有原型定义。原型定义可以传达给编译器更多的可能用于优化的信息。
huangchui 发表于 2017-11-12 11:27 | 显示全部楼层
尽可能使用常量(const)
jiajs 发表于 2017-11-12 11:28 | 显示全部楼层

嗯,C++ 标准规定,如果一个 const 声明的对象的地址不被获取,允许编译器不对它分配储存空间。
zhanghqi 发表于 2017-11-12 11:30 | 显示全部楼层

是啊,这样可以使代码更有效率,而且可以生成更好的代码。
zhenykun 发表于 2017-11-12 11:33 | 显示全部楼层
把本地函数声明为静态的(static)
wyjie 发表于 2017-11-12 11:34 | 显示全部楼层

如果一个函数只在实现它的文件中被使用,把它声明为静态的 (static)以强制使用内部连接。否则,默认的情况下会把函数定义为外部连接。
wyjie 发表于 2017-11-12 11:37 | 显示全部楼层
以前还没注意到这个问题
jlyuan 发表于 2017-11-12 11:39 | 显示全部楼层
如果一个函数只在实现它的文件中被使用,把它声明为静态的 (static)以强制使用内部连接。否则,默认的情况下会把函数定义为外部连接。
yszong 发表于 2017-11-12 11:41 | 显示全部楼层
是啊,这样可能会影响某些编译器的优化——比如,自动内联。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部