打印
[技术手册]

函数调用的性能消耗

[复制链接]
600|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVEEVER|  楼主 | 2024-3-5 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

函数调用对于处理器的性能消耗是很小的,只占有函数执行工作中性能消耗的一小部分。参数传入函数变量寄存器中有一定的限制。这些参数必须是整型兼容的(char,shorts,ints和floats都占用一个字)或者小于四个字大小(包括占用2个字的doubles和long longs)。

如果参数限制个数为4,那么第五个和之后的字就会存储在栈上。这便在调用函数是需要从栈上加载参数从而增加存储和读取的消耗。

看下面的代码:

int f1(int a, int b, int c, int d) {

   return a + b + c + d;

}



int g1(void) {

   return f1(1, 2, 3, 4);

}



int f2(int a, int b, int c, int d, int e, int f) {

  return a + b + c + d + e + f;

}



ing g2(void) {

return f2(1, 2, 3, 4, 5, 6);

}

函数g2中的第五个和第六个参数存储于栈上并在函数f2中进行加载,会多消耗2个参数的存储。

使用特权

评论回复
沙发
OKAKAKO| | 2024-3-11 15:18 | 只看该作者
其实函数调用以及存储之间的对MCU资源的整体运用

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-3-11 15:25 | 只看该作者
调用函数是需要从栈上加载参数从而增加存储和读取的消耗。

使用特权

评论回复
地板
小夏天的大西瓜| | 2024-3-19 18:18 | 只看该作者
这个对于数据存储有限的空间上很有用的

使用特权

评论回复
5
小小蚂蚁举千斤| | 2024-3-19 18:35 | 只看该作者
函数调用对于处理器的性能消耗是很小的,只占有函数执行工作中性能消耗的一小部分。参数传入函数变量寄存器中有一定的限制。

使用特权

评论回复
6
中国龙芯CDX| | 2024-3-21 14:51 | 只看该作者
调用函数是需要从栈上加载参数从而增加存储和读取的消耗。

使用特权

评论回复
7
jf101| | 2024-3-22 12:26 | 只看该作者
函数传参有的一般是直接写在内部的

使用特权

评论回复
8
szt1993| | 2024-3-25 15:23 | 只看该作者
数调用对于处理器的性能消耗是很小的,只占有函数执行工作中性能消耗的一小部分

使用特权

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

本版积分规则

297

主题

2027

帖子

4

粉丝