Hasty Briefsbeta

双语

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字节)。