平均而言,哪个更快 - 然后检查值,如果需要,分配或简单地分配?或者,用 C++ 术语来说:
bool b;
if(b)
b = false;
或者
b = false;
假设 if() 条件为真,概率为 50%。答案很可能是高度依赖于架构的——请说出您的低级考虑。写入总是弄脏缓存线 - 对吗?因此,通过避免写入,我们避免了 0.5 情况下的缓存刷新。但是足够智能的缓存可能会检测到一个微不足道的写入,而不是自己弄脏。但是无条件写入总是恰好是一次内存操作,而读写平均是 1.5 次操作。
免责声明:这是一个好奇的问题,而不是我实际面临的问题。
最佳答案
分支在现代 CPU 上很昂贵,而在嵌入式/较旧的 CPU 上内存访问很昂贵。因此,除非您有一些奇怪的内存,写入时间比读取时间长(提示:您没有)
由于这些原因,情况更糟:
if
陈述。这意味着额外的内存读取和缓存中不必要地消耗的更多空间。 b
被放入寄存器。寄存器读/写非常便宜,但它们不是免费的.. 关于assembly - 先读后条件写 vs. 写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375425/