链接分配的性能含义是什么

What's the performance implication of chaining assignment

本文关键字:是什么 性能 分配 链接      更新时间:2023-10-16

我有两个Reset()函数。与[1]相比,[2]是否有任何性能影响?

[1]

void Reset(){
  _a = 0;
  _b = 0;
  _c = 0;
  _d = 0;
}

[2]

void Reset(){
  _a = _b = _c = _d = 0;
}

一如既往,当事情很重要时,你应该根据经验进行测试,而不是仅仅依靠理论推理。

然而,在这种情况下,我想这两个代码片段在编译后会变得相同,所以没有区别。

至少在典型情况下是这样。例如,如果您的变量属于具有属性的类型

  • 给它赋值是很便宜的
  • 从该类型的另一个实例复制成本很高

那么,除非优化器足够聪明,否则链式分配的成本会高得多。

(反之亦然,如果分配整数很昂贵,但复制分配很便宜)