Vtune HotSpots(热点)使用

时间:2024-04-14 12:42:24

软件

  • Visual Studio 2008
  • VTune Amplifier XE 2011

tachyon_vtune_amp_xe

位于C:\Program Files (x86)\Intel\VTune Amplifier XE 2011\samples\en\tachyon_vtune_amp_xe.zip

Vtune HotSpots(热点)使用

HotSpots(热点)的使用

  • 设置find_hotspots为启动项目

1. 项目属性要求

  • C/C++ -> General 要求如下
    Vtune HotSpots(热点)使用

  • Linker -> Debugging -> General Debug Info 必须为Yes
    Vtune HotSpots(热点)使用

这样的话,在Debug模式和Release都可以进行热点分析

2. 点击New Analysis

Vtune HotSpots(热点)使用

3. 创建热点

Vtune HotSpots(热点)使用

4. Start 程序运行结束后

Vtune HotSpots(热点)使用

I. Summary

Summary主要分析的数据有:”Elapsed Time(经过的总时间)“、”Top Hotspots(高热点部分)“、“CPU Usage Histogram(CPU使用直方图)“和”Collection and Platform Info(收集信息和平台信息)
Vtune HotSpots(热点)使用

  • Elapsed Time信息,主要有总线程数量CPU时间(CPU运行程序所花费的总时间)
    Vtune HotSpots(热点)使用

  • Top Hotspots信息,会列举VTune分析的程序里的活跃度最高(最耗时)的部分,例如:自旋锁、函数等。
    Vtune HotSpots(热点)使用

  • CPU Usage Histogram信息,显示CPU使用直方图。
    Vtune HotSpots(热点)使用

  • Collection and Platform Info信息,包含了应用程序命令行、操作系统、CPU等信息。
    Vtune HotSpots(热点)使用

Bottom-Up

主要用来关注哪个对CPU时间占用最多

Vtune HotSpots(热点)使用

  • 此处initialize_2D_buffer这个函数占用的CPU时间最多
  • 我们可以双击该条目, 进入到源代码以及可以看到汇编码

Vtune HotSpots(热点)使用

  • 可以看到mem_array这里的操作消耗的时间最多,我们可以双击该行代码进入修改

Vtune HotSpots(热点)使用

  • 可以发现此处代码缺陷是数组的填充不是按内存连续填充的
  • 进行如下修改, 使内存连续填充
    Vtune HotSpots(热点)使用

Vtune HotSpots(热点)使用

反而慢了一点。。按道理应该是会变快的

使用compare

Vtune HotSpots(热点)使用

Vtune HotSpots(热点)使用

Vtune HotSpots(热点)使用

  • 通过比较,可以清楚改后,CPU的优化效果。