打印
[MCU]

谁比较熟悉函数优化啊

[复制链接]
907|34
手机看帖
扫描二维码
随时随地手机跟帖
沙发
shimx| | 2019-12-18 23:38 | 只看该作者

Inline函数

在 C++ 中,关键字 Inline 可以被加入到任何函数的声明中。 这个关键字请求编译器用函数内部的代码替换所有对于指出的函数的调用。

使用特权

评论回复
板凳
yszong| | 2019-12-18 23:42 | 只看该作者

这样做在两个方面快于函数调用:第一,省去了调用指令需要的执行时间;第二,省去了传递变元和传递过程需要的时间。

使用特权

评论回复
地板
jiaxw| | 2019-12-18 23:47 | 只看该作者
但是使用这种方法在优化程序速度的同时,程序长度变大了,因此需要更多的 ROM 。

使用特权

评论回复
5
spark周| | 2019-12-18 23:51 | 只看该作者
使用这种优化在 Inline 函数频繁调用并且只包含几行代码的时候是最有效的。

使用特权

评论回复
6
liliang9554| | 2019-12-18 23:53 | 只看该作者
不定义不使用的返回值

使用特权

评论回复
7
午夜粪车| | 2019-12-18 23:56 | 只看该作者
对,函数定义并不知道函数返回值是否被使用,假如返回值从来不会被用到,应该使用 void 来明确声明函数不返回任何值。

使用特权

评论回复
8
yszong| | 2019-12-19 21:08 | 只看该作者
减少函数调用参数

使用特权

评论回复
9
heweibig| | 2019-12-19 21:11 | 只看该作者

嗯,使用 全局变量 比函数传递参数更加有效率。这样做去除了函数调用参数入栈和函数完成后参数出栈所需要的时间。

使用特权

评论回复
10
heweibig| | 2019-12-19 21:15 | 只看该作者
然而决定使用全局变量会影响程序的模块化和重入,故要慎重使用。

使用特权

评论回复
11
zhaoxqi| | 2019-12-19 21:17 | 只看该作者
所有函数都应该有原型定义

使用特权

评论回复
12
zhaoxqi| | 2019-12-19 21:23 | 只看该作者
一般来说,所有函数都应该有原型定义。原型定义可以传达给编译器更多的可能用于优化的信息。

使用特权

评论回复
13
huangchui| | 2019-12-19 21:26 | 只看该作者
尽可能使用常量(const)

使用特权

评论回复
14
jiajs| | 2019-12-19 21:29 | 只看该作者
嗯,C++ 标准规定,如果一个 const 声明的对象的地址不被获取,允许编译器不对它分配储存空间。

使用特权

评论回复
15
zhanghqi| | 2019-12-19 21:32 | 只看该作者
是啊,这样可以使代码更有效率,而且可以生成更好的代码。

使用特权

评论回复
16
zhenykun| | 2019-12-19 21:37 | 只看该作者
把本地函数声明为静态的(static)

使用特权

评论回复
17
wyjie| | 2019-12-19 21:39 | 只看该作者
如果一个函数只在实现它的文件中被使用,把它声明为静态的 (static)以强制使用内部连接。否则,默认的情况下会把函数定义为外部连接。

使用特权

评论回复
18
jiaxw| | 2019-12-19 21:42 | 只看该作者
以前还没注意到这个问题

使用特权

评论回复
19
jlyuan| | 2019-12-19 21:47 | 只看该作者
如果一个函数只在实现它的文件中被使用,把它声明为静态的 (static)以强制使用内部连接。否则,默认的情况下会把函数定义为外部连接。

使用特权

评论回复
20
yszong| | 2019-12-19 21:49 | 只看该作者

是啊,这样可能会影响某些编译器的优化——比如,自动内联。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝