我有时会看到像这样的优化代码:
if (matrix[t] != 0) {
matrix[t] = 0;
}
与仅有这段代码相反:
matrix[t] = 0;
我想这段代码是这样编写的,以减少CPU中的内存带宽。在典型的CPU上(当值很可能已经为0时),这是一种好的优化方法吗?为什么?
这对MESI状态意味着什么:如果我将相同的值写回缓存行(写入但不修改),是否会从共享状态转换到修改状态?或者这对于CPU来说太复杂了,无法检测到?
典型的CPU(或至少某些CPU)是否在优化此情况的任何内容?