[技术手册] 函数调用的性能消耗

[复制链接]
1068|7
 楼主| LOVEEVER 发表于 2024-3-5 22:10 | 显示全部楼层 |阅读模式

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

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

看下面的代码:

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

  2.    return a + b + c + d;

  3. }



  4. int g1(void) {

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

  6. }



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

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

  9. }



  10. ing g2(void) {

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

  12. }

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

OKAKAKO 发表于 2024-3-11 15:18 | 显示全部楼层
其实函数调用以及存储之间的对MCU资源的整体运用
星辰大海不退缩 发表于 2024-3-11 15:25 | 显示全部楼层
调用函数是需要从栈上加载参数从而增加存储和读取的消耗。

小夏天的大西瓜 发表于 2024-3-19 18:18 | 显示全部楼层
这个对于数据存储有限的空间上很有用的
小小蚂蚁举千斤 发表于 2024-3-19 18:35 | 显示全部楼层
函数调用对于处理器的性能消耗是很小的,只占有函数执行工作中性能消耗的一小部分。参数传入函数变量寄存器中有一定的限制。
中国龙芯CDX 发表于 2024-3-21 14:51 | 显示全部楼层
调用函数是需要从栈上加载参数从而增加存储和读取的消耗。
jf101 发表于 2024-3-22 12:26 | 显示全部楼层
函数传参有的一般是直接写在内部的
szt1993 发表于 2024-3-25 15:23 | 显示全部楼层
数调用对于处理器的性能消耗是很小的,只占有函数执行工作中性能消耗的一小部分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

2689

帖子

7

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