我在使用 C++/VistualStudio/WindowsXP 编写的软件的多核 (8+) 架构上面临性能问题。
突然我意识到我不知道我的 L1 和 L2 缓存以及 CPU->to->内存带宽的性能。
我已经测试了几种工具(包括 VTune、Glowcode 等),但是在多核架构中的负载测试时它们都失败了(这正是我需要它们的原因!)。
您能否推荐任何其他在绘制图表方面不太花哨但至少可以给我一些关于我的缓存/内存性能的指示,或者可以建议代码片段来手动检测我的应用程序的工具?
谢谢!
我在使用 C++/VistualStudio/WindowsXP 编写的软件的多核 (8+) 架构上面临性能问题。
突然我意识到我不知道我的 L1 和 L2 缓存以及 CPU->to->内存带宽的性能。
我已经测试了几种工具(包括 VTune、Glowcode 等),但是在多核架构中的负载测试时它们都失败了(这正是我需要它们的原因!)。
您能否推荐任何其他在绘制图表方面不太花哨但至少可以给我一些关于我的缓存/内存性能的指示,或者可以建议代码片段来手动检测我的应用程序的工具?
谢谢!
您确定这是您的性能问题的根源吗?如果没有,最好先看看其他的东西。
这里有一篇关于多线程编程的好文章,以及它的各种隐藏问题。也许这会有所帮助?
您可以使用硬件计数器来测量 L1 和 L2 未命中率;但是,我不太确定在 Windows 平台上使用哪个库包。
也许Memtest86+是您正在寻找的。
我相信 EVEREST 测试套件会检查您的内存/cpu/缓存性能。你可能想看看这个网站。Lavalys 的珠穆朗玛峰页面
你试过缓存研磨吗?当然,它是一个模拟器,但它仍然可以让你捕捉到大部分真正的问题。