工具向导:使用 Rational Quantify™ 查找性能瓶颈

转自:http://ir.hit.edu.cn/~car/programming/rup/toolment/vqtfy/tm_vqtfy.htm#Step1

目的

本工具向导概括说明了如何使用 Rational Quantify 快速地查明 Visual C/C++、Visual Basic、和 Java 程序中的性能瓶颈。要了解 Quantify 的详细信息,包括如何设计性能改进、解释源代码注释、比较程序的各次运行,以及数据集合的调优,请参见 Getting Ahead With Rational Quantify。有关使用 Quantify 的分步信息,请参见 Quantify 联机帮助。

相关的 Rational Unified Process 活动:活动:执行单元测试中的“执行单元测试”部分。

概述

Quantify 为您的程序及其构件提供了一个完整、精确的性能数据集,这个数据集的格式既容易理解又方便使用,这样您就可以清楚地看到程序在执行哪一段时花费的时间较长。 要评价程序的性能,请执行以下步骤:

  1.  
    1. 使用 Quantify 运行一个程序来收集性能数据
    2. 使用 Quantify 的数据分析窗口和工具来分析性能数据
    3. 再次运行该程序并使用 Quantify 的比较运行工具来查找性能变化

工具步骤

  1. 使用 Quantify 运行一个程序来收集性能数据 

评价程序性能的第一步是收集性能数据。

对于 Visual C++,既可以直接使用 Quantify 集成的 Microsoft Developer Studio,也可以通过 Quantify 来诊断并运行一个程序。Quantify 诊断可执行文件的副本和与其相关的模块。Quantify 也可以插入其他代码来收集计数和计时性能数据。Quantify 在诊断文件的同时将显示进度。

对于 Java,既可以由 Quantify 的容器程序(使用 Run Program 对话框),也可以由命令行来运行 Java Applet、类文件或代码。 在评价 Java 代码时,Quantify 将 Microsoft virtual machine (VM) for Java 置于一种特殊模式,Quantify 借此监测 VM 的操作并在 Applet、类文件或代码运行的同时直接收集计数和计时性能数据。

对于 Visual Basic,既可以直接使用 Quantify 集成的 Microsoft Visual Basic,也可以由 Quantify 来运行 Visual Basic 项目或伪码程序 (Visual Basic 6.0),或 Visual Basic 本机码程序(Visual Basic 5.0 或更高版本)。在评价项目或伪码程序时,Quantify 将 Visual Basic for Applications (VBA) 解释引擎置于一种特殊模式,Quantify 借此监测该引擎的操作并在代码运行的同时直接收集计时性能数据。对于本机码程序,Quantify 将诊断该程序,然后收集计数和计时性能数据。

当 Quantify 开始评价时,它会显示 Run Summary 窗口,这样您就可以监测线程和纤程的活动,并检查有关此次运行的其他信息。Quantify 会在您执行代码的同时记录其性能的有关数据。 您可以随时暂停和重新开始记录数据,这样您就可以评价特定的代码段。您也可以保留当前数据的快照,这样您就可以分阶段地检查性能。

退出程序时,Quantify 将提供该程序性能的一个完整评价。由于这个基数据集可能很大,所以 Quantify 在显示性能评价之前,会使用过滤器从系统库和其他模块中自动滤除不重要的数据。在分析性能数据的同时,您可以或多或少地显示来自于原始数据集的数据和细节。

提示:除了交互式地使用 Quantify 之外,您也可以将 Quantify 与测试脚本、makefile 和批处理文件一同使用来进行自动测试。有关详细信息,请查阅 Quantify 联机帮助索引中的 scripts

    是否需要更多信息?请参阅 Quantify 联机帮助索引中的 developer studiovisual basicjavarun summary 和 recording data

  1. 使用 Quantify 的数据分析窗口和工具来分析性能数据 

评价程序性能的第二步是分析 Quantify 收集的性能数据。

退出 Quantify 为其收集数据的程序后,Quantify 会显示 Call Graph 窗口,用图形的方式来描述该程序中函数、过程或方法(此处总称为函数)的调用结构和性能。默认情况下,调用图会根据函数+子代 (F+D) 时间来显示当前数据集中的前 20 个函数。Quantify 的结果实际上并未包括评价过程自身占用的时间。您所看到的数字是程序在未利用 Quantify 的情况下所花费的时间。

调用图还突出显示了占用时间最多的路径;较粗的线条表明路径占用的时间较多。您也可以根据不同的标准,包括性能、调用关系以及可能产生瓶颈的原因,来突出显示其他函数。您还可以显示另外的函数、隐藏函数,并来回移动函数,以便更清楚地查看调用图。

可以使用 Quantify 的其他数据分析窗口来进一步检查程序的性能。要对当前数据集中的所有函数进行复审,并根据不同标准对其分类,请使用 Function List 窗口。Function Detail 窗口以表格加图形的形式显示了特定函数的数据,以及有关其调用方和后代的数据。如果在运行程序时调试数据是可用的,并且您是在代码行一级上评测函数,那么您就可以使用 Annotated Source 窗口逐行地分析特定函数的性能。

Quantify 提供了几种途径来缩减较大的数据集,从而只显示您感兴趣的数据。例如,您可以指定过滤器根据模块、模式(例如,名称中有 CWnd 的函数),或评测类型(例如,所有等待和阻塞的函数)来滤除函数。您也可以集中在一个特定的子树上。

通过合并各次独立的运行过程来创建一个新的数据集,您可以很容易地跨越各次运行来分析程序的性能。

    是否需要更多信息?请查阅 Quantify 联机帮助索引中的 call graph windowfunction list windowfunction detail windowannotated source windowhighlighting functionsfiltering data 和 subtrees

  1.  

       

  2. 再次运行该程序并使用 Quantify 的比较运行工具来查找性能变化 

评价程序性能的第三步也是最终步骤是比较两次运行的性能数据,查看改动代码是使性能提高了还是降低了。

改动代码后,您可以重新运行更新过的程序并将新结果同前一次运行作比较。Diff Call Graph 用绿色突出显示性能的提高,用红色表示性能的降低,这样可帮助您迅速地查明性能的改变。Diff Function List 除了显示两次运行的原始数据之外,还显示两次运行之间的差别。

使用 Navigator 窗口来跟踪您执行的各次运行过程。 您可以将性能数据保存为一个 Quantify 数据文件 (.qfy),用于进一步的分析或同其他 Quantify 用户共享。您也可以将数据保存为一个由制表符分隔的 ASCII 文本文件 (.txt),从而能够在 Quantify 之外(如在测试脚本中或在 Microsoft Excel 中)使用。您还可以直接将数据由 Function List 窗口复制到 Excel 中使用。

    是否需要更多信息?请查阅 Quantify 联机帮助索引中的 comparing runsnavigator window 和 saving data

你可能感兴趣的:(数据分析,function,Microsoft,basic,Graph,工具)