【问题标题】:access speed to static and heap memory访问静态和堆内存的速度
【发布时间】:2016-12-06 01:59:40
【问题描述】:

关于堆栈和堆变量的访问速度的话题很多,但我找不到关于静态和堆变量的访问速度的问题和正确答案。

如果对象生命周期与程序生命周期相同,我应该更喜欢什么(在访问速度方面)?哪个更快 - 使用静态分配的对象或堆中的对象?

我说的是 C++,如果相关的话。

【问题讨论】:

  • 与大多数现代操作系统相比,没有任何区别。

标签: c++ memory static heap-memory


【解决方案1】:

没有区别。绝对地。加载程序后,CPU 根本不知道它正在处理哪种内存(堆或静态)。

上述陈述适用于 98% 的最常见 CPU 架构/实现。尽管某些计算机可能具有以不同速度工作的不同内存区域。如果是这种情况,您需要检查这一点。这种特殊内存是如何映射的 - 这取决于特定的平台/配置。

根据编译器/环境,具有较大静态区域的程序可能加载速度稍慢。但这不是绝对的规则。

最好考虑数据的局部性(您的数据片段是否彼此靠近)以及一个值如何将另一个值从 CPU 缓存中踢出。将某些内容加载到缓存中比访问已经在缓存中的内容要慢 10-100 倍。这将产生非常明显的差异。

【讨论】:

  • 感谢您的回答,数据局部性和程序架构超出了问题的范围。我只是找不到关于静态/堆内存的实际访问时间的好信息,并询问了社区。​​span>
猜你喜欢
  • 2012-01-29
  • 1970-01-01
  • 2012-09-06
  • 2014-01-10
  • 1970-01-01
  • 2018-08-01
  • 2011-04-25
  • 1970-01-01
相关资源
最近更新 更多