我正在用 C++ 编写一个应用程序,它需要从多个线程多次从同一内存读取只读数据。 我的问题是,从性能的角度来看,为每个线程复制内存还是为所有线程提供相同的指针并让它们访问相同的内存会更好。
谢谢
最佳答案
根据您提供的关于您的目标系统等的少量信息,没有明确的答案,但在普通 PC 上,最快的方法很可能是不复制。
复制可能很慢的一个原因是,如果数据区域很大,它可能会导致缓存未命中。普通 PC 会在线程之间非常有效地缓存对同一数据区域的只读访问,即使这些线程恰好在不同的内核上运行。
英特尔为其缓存方法明确列出的好处之一是 "Allows more data-sharing opportunities for threads running on separate cores that are sharing cache" . IE。他们鼓励您不必对线程进行编程来显式缓存数据,CPU 会为您做这件事。
关于c++ - 内存访问与内存复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734080/