1.Profile的作用

  帮助你分析并发现程序运行的瓶颈,找到耗时所在,同时也能帮助你发现不会被执行的代码。从而终实现程序的优化。

  2.Profile的组成

  Profile包括3个命令行工具:PREP,PROFILE,PLIST。可以以命令行方式运行Profile,其过程是:PREP读取应用程序的可执行文件并生成一个.PBI文件和一个.PBT文件;PROFILE根据.PBI文件,实际运行并分析程序,生成.PBO输出文件;PREP再根据.PBO文件和.PBT文件,生成新的.PBT文件;PLIST根据.PBT文件生成可阅读的输出。

  3.IDE环境下Profile的使用

  对于涉及函数分析的功能

  <1>选择Project->Settings->Link,选择Enableprofiling复选框

  <2>重建项目

  <3>选择Build->Profile,弹出Profile对话框

  <4>做必要设置后,选择OK,开始运行程序

  对于涉及行分析的功能

  <1>选择Project->Settings->Link,选择Enableprofiling复选框和Generatedebuginfo复选框

  <2>选择Project->Settings->C/C++,选择LineNumbersOnly

  <3>重建项目

  <4>选择Build->Profile,弹出Profile对话框

  <5>做必要设置后,选择OK,开始运行程序

  4.Profile的具体功能实现

  通过build/profile激活profile对话框

  可以实现如下功能:

  Functiontiming:对程序花费在执行特定函数上的时间进行评估。分析结果中,FuncTime一栏以秒为单位记录了函数运行所花时间,下一栏显示了该函数时间占总运行时间的百分比;Func+ChildTime栏记录了函数及其所调用的子函数运行所花的总时间,下一栏显示了前述时间占总运行时间的百分比;HitCount栏记录函数被调用的次数;Function栏显示函数的名称。

  Functioncoverage:记录特定函数是否被调用,可以用来确定代码中的未执行部分。分析结果列出所有被分析的函数,并使用*号标记执行过的函数。

  Linecoverage:记录代码中的特定行是否被执行,可以用来确定代码中的未执行部分。分析结果列出所有被分析的代码行,并使用*号标记执行过的行。

  Functioncounting:记录程序调用特定函数的次数。在Profile对话框中选择Custom,并在CustomeSettings中指定fcount.bat(位于VC98/bin目录下)。需要注意的是,在指定fcount.bat所在目录时,好不要用长文件名的方式,这样有可能出错,比如要将c:ProgramFiles写成c:Progra~1。

  Linecounting:记录程序所执行的代码中特定行的次数。在Profile对话框中选择Custom,并在CustomeSettings中指定lcount.bat(位于VC98/bin目录下)。该功能使用.EXE中的调试信息启动Profile,因此不需要.MAP文件。分析结果中,Line栏标示源代码的行号,HitCount栏记录该行执行次数,下一栏显示了该行执行次数占所有代码行执行次数的百分比,SourceLine显示了对应的源代码。