我有一个应用程序只执行很少的计算CPU工作,但主要是内存访问(分配对象并移动它们,几乎没有数字或算术代码)。
如何测量我在内存访问延迟(由于缓存未命中)和CPU闲置时花费的时间份额?
我应该注意该应用程序正在Hyper-V来宾上运行;我不确定它会带来什么困难,但它可能会。
答案 0 :(得分:2)
除非您在系统中内置延迟,否则只需在专用计算机上运行应用程序一段时间并检查CPU计数器。如果应用程序使用它可以访问的100%的CPU核心,则它受CPU限制。否则,它会花时间处理内存分配和IO等其他事情。
答案 1 :(得分:2)
您可以随时profile
申请查看大部分时间的投放位置。
您可以通过这种方式了解应用程序的行为和数据访问模式。
如果您使用的是Linux,则可以使用各种可用于分析的工具,例如:
修改强>
要更精确地衡量处理器性能和内存访问,您还可以尝试AMD CodeAnalyst Performance Analyzer。 Here是有关如何将其与英特尔处理器配合使用的说明,但我自己没有尝试过。
您可能会觉得有用的另一个工具是Intel Performance Tuning Utility。