内存访问与内存复制

ger*_*tla 6 c++ memory performance

我正在用C++编写一个应用程序,它需要从许多线程中多次从同一内存中只读.我的问题是从性能的角度来看,为每个线程复制内存或者为所有线程提供相同的指针并让所有线程都访问相同的内存会更好.

谢谢

Pro*_*ica 6

您提供的关于目标系统等的小信息没有明确的答案,但在普通PC上,最快的可能是不复制.

复制可能很慢的一个原因是,如果数据区很大,它可能会导致缓存未命中.普通的PC会在线程之间非常有效地缓存对同一数据区域的只读访问,即使这些线程恰好在不同的内核上运行.

英特尔为其缓存方法明确列出的一个好处是"允许在共享缓存的单独核心上运行的线程有更多的数据共享机会".也就是说,他们鼓励你不必编写线程来显式缓存数据,CPU会为你做.