我有2个C ++代码:
代码1:减少赋值变量
While(alive)
{
if(health < healthMax) health = healthMax;
}
代码2:不减少赋值变量
While(alive)
{
health = healthMax;
}
我不知道如何设置和获取有效,但我个人认为该设置会改变/写入内存中的数据,并且只获取读取内存,因此最好获得并减少设置 - 这就是为什么我现在更喜欢Code 1的原因。我认为是对的吗?
感谢您阅读:)
答案 0 :(得分:1)
没有。希望编译转换为寄存器之间的移动,这比条件分支便宜。
如果health
是全局的,您可能希望手动将商店接收到循环中的全局,但即使是每次迭代的商店都不是太糟糕。重复存储到同一个内存位置很便宜,因为它们会在L1缓存中命中。您可以预期每个时钟的吞吐量约为1,而不会占用其他内核的内存带宽。
由于您将此标记为assembly
,请参阅this标记wiki,以获取该平台的效果详情的链接,尤其是Agner Fog的内容。许多概念与其他架构类似。