2015-05-16 48 views
2

我读斯科特市长介绍,他mentiones这一行:代码重复有效降低高速缓存大小

内联的

一面:代码重复有效降低高速缓存大小

我不是了解代码复制与高效缓存大小之间的关系

+4

如果一个经常使用的函数没有内联,那么它的代码就存在于内存中的一个单独的位置,这会频繁地被击中,因此大部分时间都可能在缓存中。另一方面,如果内联,代码的许多副本将存在于不同的位置,因此缓存不太有用。 –

+0

完美的感觉不知道我是如何错过的。谢谢 – Kam

+0

@cicada应该回答没有评论 – b4hand

回答

5

复制代码意味着相同的指令在连续的内存地址上被复制,而不是在循环的主体中具有这些指令的单个副本。这意味着很多高速缓存行都被填充了相同的内容,而不仅仅是一些。由于这些指令经常被访问(每循环运行一次),所以它们可能不会离开缓存,所以其他代码(或缓存统一的数据)必须离开,如果填充缓存的频繁访问指令的数量较少条目。