【发布时间】:2010-09-23 06:24:29
【问题描述】:
访问全局变量或对象变量是否更快?
在 C++ 中,我指的是两者的区别
::foo
和
this->foo
在 x86 汇编器中,这基本上转换为
mov eax, offset foo
对
mov eax, dword ptr[edx+foo]
这两种情况下的所有数据都应该在缓存中。
(我知道差异会很小,通常应该选择使代码更简单的那个;但在这种情况下,实际上没有其他差异,所讨论的代码可能会被调用十亿次在时间限制内,所以我还是选择稍微快一点的。)
【问题讨论】:
-
测试和计时这两个变体怎么样?
-
如果它很重要,那么值得计时。也就是说,成员变量可能会更频繁地与您的其他数据一起缓存。
-
“有时间限制”?这是什么时限?每秒 50 亿次访问可能意味着它在性能方面很重要,但每小时 50 亿次访问则完全无关紧要。