


本文主要介绍传参优化。实验环境是CentOS7 + GCC。
1. 优化方法简述
函数参数的传递通常是通过寄存器或者栈等方式进行的。而向函数传递的参数越多,开销就越大。这是因为当参数数量增多时,需要在函数调用时将这些参数存储到寄存器中或者压入栈内,这会增加函数调用的开销。因此,当函数的参数较多时,为解决参数传递较多的问题,可以将函数的参数组合成一个结构体指针。
2. 示例分析
当函数的参数较多时,为了减少传递参数的开销,可以将函数的参数组合成结构体指针。左边给出了示例优化前代码paramTrans1.cpp,右边给出了示例优化后代码paramTrans2.cpp。

编译运行命令:
(1)gcc paramTrans1.cpp -o paramTrans1
(2)./paramTrans1
(3)gcc paramTrans2.cpp -o paramTrans2
(4)./paramTrans2

优化前后,代码的执行结果都是正确的,但优化后代码的执行时间要比优化前代码的执行时间短。因此,将函数的参数组合成一个结构体指针,可以在一定程度上缩短程序的执行时间。
汇编代码生成命令:
(1)gcc -S paramTrans1.cpp -o paramTrans1.s
(2)gcc -S paramTrans2.cpp -o paramTrans2.s

3. 总结
函数参数的传递通常是通过寄存器或者栈等方式进行的。而向函数传递的参数越多,开销就越大。当函数的参数较多时,为解决参数传递较多的问题,可以将函数的参数组合成一个结构体指针。
4. 参考资料
(1)(1 封私信) 在函数中需要用到大量参数时如何传参可以更简洁合理? - 知乎 (zhihu.com)
(2)C++对传参和传返回值时的优化处理_c 传参 优化-CSDN博客


