解码库性能测试

测试目的:使用测试工具给出协议解码库的性能指标

测试工具:Intel公司的VTuneAMD公司的CodeAnalyst

采用方式:回放文件

一、VTune

 

VTune(TM) Performance Analyzer 是针对Intel芯片的一款性能分析软件,安装文件位于//ngwbuild01/Wupeng目录下

1.1 在虚拟机环境下运行很不正常,有时可以使用,有时会报出如下错误

Figure 1 Error Message

对于此类错误开始以为是操作方法的问题,与帮助文档验证操作过程后仍频繁出现,经网络搜索后证明是与虚拟机不兼容,参考网页:

http://blog.shuva.in/comments.php?y=07&m=09&entry=entry070923-222018

1.2 VTune基本操作。

VTune有三种分析方法:

Sampling :时间采样(主要方式)

Call graph :以图表方式表现

Counter monitor collectors:时钟监视结果

Step.1新建一个工程:File->new project,一般选Quick Performance Analysis Wizard就可以了。

Step.2选择要测试的程序,在弹出的对话框中有Application to Launch,填入Debug文件下的exe程序就行了。

Step.3 Run Activity:按工具栏上的绿色三角按钮就行了, 一般会自动运行程序,这时你执行你想要的操作。本来还有些配置可以配的,不过比较麻烦,没有深入研究。

完成一次测试后,会看到run1总表,如下图所示

Figure 2 Overview

包含第一层次的性能计数器:

1) INST_RETIRED.ANY - 表示指令的有效执行的计数

2) CPU_CLK_UNHALTED.CORE - 表示非停机状态花费的机器周期

CPI(每次执行消耗的时钟时间) = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY

    表示一段代码(函数,模块)平均每条指令花费的机器周期,愈小愈好。这样可以找到那些CPU_CLK_UNHALTED.CORE大的函数且CPI也大的函数去关注(通常称之为热点函数)

双击待测试的进程,进入Threads视图,如下所示

Figure 3 Threads视图

显示了当前进程的所有线程,需要逐个线程查看所要观察的dll在哪个线程中,下图显示该线程用到的所有module

Figure 4 Modules视图

双击module显示此module的信息,如下图所示

Figure 5 Hotpots视图

如果此moduledebug版,可以继续观察代码的执行情况,且与pdb文件同级,在查看ProcessDetail过程中会要求指定源码的位置,从而给出各段代码执行时间。如下图所示:

Figure 6 Code

     

1.3 附加功能

VTune还有另外两个功能是关于多线程的优化,在这里没有使用。

二、CodeAnalyst使用

CodeAnaylyst操作与VTune类似,但软件相对简单,而且目前运行环境的硬件架构是在Intel CPU上,只能使用此软件的Time Sampling功能。

SART配合使用时出现多次测试,发现在CodeAnalyst中看到加载的动态库每次不同,如以下三张截图所示:

Figure 7 CodeAnalyst test1

Figure 8 CodeAnalyst test2

Figure 9 CodeAnalyst test4

 

CodeAnalyst可以完成对代码执行效率的分析,比如可以分析到某段程序的瓶颈出现在那行代码,可以用于指导编程人员去修改,但此工具不能用来定位某动态库效率指标。

你可能感兴趣的:(C/C++)