c++ - 内存访问与内存复制

标签 c++ performance memory

我正在用 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/

相关文章:

sql - 我的用例能否在不影响性能的情况下合并到单个查询中?

c# - 使用 StreamWriter 和 Trace Listeners 写入日志非常慢

c - C如何知道期望什么类型?

c++ - 如何在 C++ 中使用 Mosquitto 发布文件?

c++ - C 字符串到宽 C 字符串

java - 在java中使用字符串初始化的运行时差异是什么?

c++ - 设备内存空间中的cuda程序内核代码

memory - "not enough storage is available to process this command"在 Windows 7 的批处理文件中使用启动命令后

c++ - 将 Child 对象数组传递给接受 Parent* 的函数

c++ - 使用 clang 编译 std::tuple 时遇到问题