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显示了对应的源代码。