通常,传递指针的速度更快 - 您将调用equal(&r1, &r2)where r1和r2local struct变量.您可以将形式声明为const指向const结构的指针(这可以帮助优化编译器生成更高效的代码).你也可以使用restrict关键字(如果你确定你永远不会equal用两个相同的指针调用你,例如equal(&r1,&r1),没有指针别名).
但是,某些特定的 ABI和调用约定可能要求对某些特定结构进行特殊处理.例如,Linux 的x86-64 ABI(和Unix SVR4)表示通过两个寄存器返回struct带有两个指针或整数值的a .这通常比使用寄存器中的指针修改存储区更快.因人而异.
所以要知道什么是更快,你真的应该基准.但是,按值传递足够大struct(例如,至少有4个整数或指针字段)几乎总是比传递指针要慢.
顺便说一下,当前台式机和笔记本电脑处理器真正重要的是CPU缓存.将常用数据保存在L1或L2缓存中将提高性能.另请参见本.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |