如何将 Vtune 分析限制为特定函数

How to restrict Vtune Analysis to a specific function

我有一个程序,其基本结构如下:

<c language headers>
main() {
    some malloc() allocations and file reads into these buffers
    call to an assembly language routine that needs to be optimized to the maximum
    write back the output of to files and do free()
exit()
}

汇编语言程序本质上是计算缓冲区中数据的校验和,我的目的是将其优化到绝对最大值。它不进行任何系统调用或任何库函数调用。

我刚刚将 Intel vTune Amplifier XE 套件安装到 VS 2015 中。

如何指定vtune 严格关注汇编语言例程部分,而跳过所有对"C" 语言准备部分的分析。我似乎正在累积所有数据,如指令计数或 CPI 等。是否可以仅获取汇编语言子例程中的循环和分支的数据。如果是这样,请告诉我该怎么做。

谢谢

您可以通过 API 提供的 VTune 检测您的代码,以分析工作负载中的特定区域。使用 Task API for tracking thread-specific activities or Frame API 分析工作负载的全局阶段。

配置分析类型,select选项“分析用户任务”以处理检测任务。收集完成后,选择以 Task 或 Frame 开头的分组,以查看聚合到您的检测间隔的性能数据。您还会在时间轴中看到您的 tasks/frames。

例如,您可以将代码更改为:

<c language headers>
#include "ittnotify.h"

main() {

  __itt_domain* domain = __itt_domain_create("MyDomain");
  __itt_string_handle* task = __itt_string_handle_create("MyTask");

  some malloc() allocations and file reads into these buffers

  __itt_task_begin(domain, __itt_null, __itt_null, task);

  call to an assembly language routine that needs to be optimized to the maximum

  __itt_task_end(domain);

  write back the output of to files and do free()
  exit()
}

不要忘记按照 basic configuration 编译此代码。