Sev*_*yev 6 cpu assembly low-level
平均而言,这更快 - 检查值,然后,如果需要,分配,或只是分配?或者,用C++术语:
bool b;
if(b)
b = false;
Run Code Online (Sandbox Code Playgroud)
要么
b = false;
Run Code Online (Sandbox Code Playgroud)
假设if()条件为真,概率为50%.答案很可能是高度依赖于架构的 - 请说出您的低级别考虑因素.写入总是弄脏缓存行 - 对吧?因此,通过避免写入,我们在0.5个案例中避免了缓存刷新.但是足够聪明的缓存可能会检测到一个简单的写入而不是自己的脏.但无条件写入始终只是一个内存操作,而读写平均是1.5个操作.
免责声明:这是一个好奇的问题,而不是我实际面临的问题.
分支在现代 CPU 上的成本很高,而内存访问在嵌入式/较旧的 CPU 上的成本也很高。因此,平面分配总是会更快,除非你有一些奇怪的内存,写入时间比读取时间长(提示:你没有)
具体来说,由于以下原因,情况变得更糟:
if语句。因此意味着额外的内存读取和缓存中不必要的更多空间消耗。b将其放入寄存器中。寄存器读/写非常便宜,但它们不是免费的。