我应该减少设定变量吗?

时间:2016-08-17 07:48:32

标签: c performance conditional variable-assignment

我有2个C ++代码:

代码1:减少赋值变量

While(alive)
{
if(health < healthMax) health = healthMax;
}

代码2:不减少赋值变量

While(alive)
{
health = healthMax;
}

我不知道如何设置和获取有效,但我个人认为该设置会改变/写入内存中的数据,并且只获取读取内存,因此最好获得并减少设置 - 这就是为什么我现在更喜欢Code 1的原因。我认为是对的吗?

感谢您阅读:)

1 个答案:

答案 0 :(得分:1)

没有。希望编译转换为寄存器之间的移动,这比条件分支便宜。

如果health是全局的,您可能希望手动将商店接收到循环中的全局,但即使是每次迭代的商店都不是太糟糕。重复存储到同一个内存位置很便宜,因为它们会在L1缓存中命中。您可以预期每个时钟的吞吐量约为1,而不会占用其他内核的内存带宽。

由于您将此标记为assembly,请参阅this标记wiki,以获取该平台的效果详情的链接,尤其是Agner Fog的内容。许多概念与其他架构类似。