c++ - 调试 CPU 缓存

标签 c++ c performance caching cpu-cache

我目前正在尝试优化我的软件以更好地使用 CPU 缓存。 SO 上有一些帖子表明,有时难以猜测CPU 缓存在做什么以及为什么在某些情况下性能会下降。例如:

因此,为了获得缓存未命中发生位置的线索,我可以运行 perf 来获取缓存未命中数及其发生位置,以及 valgrind --tool=cachegrind 来模拟缓存(至少是一级缓存和末级缓存)。

很高兴知道缓存未命中发生在何处,但我想知道它们发生的原因(例如缓存垃圾等)。有没有办法显式暂停程序并查看缓存中的内容(也许程序在 valgrindvgdb 中运行)?

最佳答案

根据我的经验,您需要反汇编二进制文件,然后查看程序在何处使用缓存。查看调用预取或缓存指令的位置。那会给你它的位置和原因。不幸的是,这是一个痛苦的过程。

关于c++ - 调试 CPU 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840373/

相关文章:

c++ - 在 QGraphicsScene 上使用 native 窗口句柄 (HWND) 在 QWidget 中显示来自设备驱动程序的视频

c++ - 我如何强制使用的模板参数实现 C++ 中的某些接口(interface)?

c++ - 在 AT&T 内联汇编中将 float / double 设置为常量值

c - 如何在 C 中返回 long 的结束数字(特别是当它们为 0 时)

ruby - 针对每一行的多个(15+)正则表达式解析文本正文的最佳方法是什么?

c# - 比较两个大列表并分配另一个列表的属性值

c++ - 异常被 Win32 消息调度程序捕获的问题

c++ - 有没有办法从 C++ 中的枚举类中获取随机数?

c - 为什么我不能在设置 F_SEAL_WRITE 后创建只读的共享映射?

performance - Kibana旋转了很长时间