我有一个应用程序,它只做很少的计算 CPU 工作,但主要是内存访问(分配对象和移动它们,很少有数字或算术代码)。
在 CPU 空闲的情况下,我如何衡量我花费在内存访问延迟(由于缓存未命中)上的时间份额?
我应该注意到该应用程序在 Hyper-V 客户机上运行;我不确定这会带来什么困难,但它可能会。
最佳答案
您总是可以profile
您的应用程序以查看它大部分时间都花在了哪里。
您可以通过这种方式了解很多有关应用程序行为和数据访问模式的信息。
如果您使用的是 Linux,则可以使用多种可用的分析工具,例如:
编辑:
要更准确地测量处理器性能和内存访问,您还可以尝试 AMD CodeAnalyst Performance Analyzer . Here是关于如何将它与英特尔处理器一起使用的说明,虽然我自己没有尝试过。
另一个您可能也会觉得有用的工具是Intel Performance Tuning Utility。 .
关于performance - 如何检查应用程序是否受 CPU 限制或内存限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156334/