C++ 对静态和堆内存的访问速度

C++ 对静态和堆内存的访问速度,c++,memory,static,heap,C++,Memory,Static,Heap,有很多关于堆栈和堆变量访问速度的主题,但我找不到关于静态和堆变量访问速度的问题和正确答案 如果对象生命周期与程序生命周期相同,我应该选择什么(在访问速度方面)?使用静态分配的对象或堆中的对象,哪个更快 我是说C++,如果是相关的。 没有区别。绝对地一旦您的程序被加载,CPU根本不知道它正在处理什么类型的内存(堆或静态) 上述情况适用于95%的最常见CPU体系结构/实现。尽管有些计算机可能有不同的内存区域,工作速度不同。如果是这种情况,您需要对此进行检查。如何映射内存-这取决于设计 根据编译器/环

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

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


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

没有区别。绝对地一旦您的程序被加载,CPU根本不知道它正在处理什么类型的内存(堆或静态)

上述情况适用于95%的最常见CPU体系结构/实现。尽管有些计算机可能有不同的内存区域,工作速度不同。如果是这种情况,您需要对此进行检查。如何映射内存-这取决于设计

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


最好考虑数据的位置(数据块是否彼此靠近)以及一个值如何将另一个值从CPU缓存中踢出。将某些内容加载到缓存比访问缓存中已有的内容慢10-100倍。这将产生非常显著的差异。

没有区别。绝对地一旦您的程序被加载,CPU根本不知道它正在处理什么类型的内存(堆或静态)

上述情况适用于95%的最常见CPU体系结构/实现。尽管有些计算机可能有不同的内存区域,工作速度不同。如果是这种情况,您需要对此进行检查。如何映射内存-这取决于设计

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


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

对于大多数现代操作系统,没有任何区别。对于大多数现代操作系统,没有任何区别。感谢您的回答,数据位置和程序体系结构超出了问题的范围。我只是找不到关于静态/堆内存实际访问时间的好信息,并询问了社区。谢谢你的回答,数据局部性和程序架构超出了问题的范围。我只是找不到关于静态/堆内存实际访问时间的好信息,并询问了社区。