关于堆栈和堆变量的访问速度有很多主题,但我找不到关于静态和堆变量访问速度的问题和正确答案。
如果对象生命周期与程序生命周期相同,我应该更喜欢(在访问速度方面)?哪个更快 - 在堆中使用静态分配的对象或对象?
我正在谈论C ++,如果相关的话。
答案 0 :(得分:2)
没有区别。绝对。加载程序后,CPU根本不知道它正在处理什么类型的内存(堆或静态)。
以上适用于95%最常见的CPU架构/实现。虽然有些计算机可能有不同的内存区域,但速度不同。如果是这种情况,您需要检查一下。如何映射此内存 - 这取决于设计。
具有较大静态区域的编译器/环境程序可能会加载速度稍慢。但这不是一个绝对的规则。
最好考虑数据的位置(您的数据是否保持彼此接近)以及一个值如何从CPU缓存中提取其他值。加载缓存的内容比访问缓存中已有的东西慢10-100倍。这将产生非常明显的差异。