Pass-by-Value Overhead
7 months ago
- #benchmarking
- #assembly
- #performance
- 按值传递结构体还是按引用传递,是完美主义者常见的两难选择。
- 基准测试表明,按值传递结构体会产生与其大小成正比的开销。
- 小型结构体(256字节以内)按值传递成本很低,可以使用SIMD寄存器。
- 超过256字节的结构体会使用`rep movs`指令,这比展开的向量化移动操作更慢。
- `rep movs`的性能呈现周期性波动,在特定结构体大小时会出现峰值(如4064-4080字节)。
- 按值传递16字节结构体每秒可达7.3亿次,而2048字节结构体则降至每秒2600万次。
- AMD Zen架构CPU在某些结构体大小时存在`rep movs`指令的性能缺陷。
- 建议:在AMD 9 3900X处理器上,应避免按值传递问题尺寸的结构体(4046-4080字节、8161-8176字节)。