用于对软件程序进行性能分析的方法和装置的制作方法

文档序号:6566831阅读:189来源:国知局
专利名称:用于对软件程序进行性能分析的方法和装置的制作方法
用于对软件程序进行性能分析的方法和装置
背景技术
1. 发明领域
本发明一般涉及软件程序开发,尤其涉及对软件程序的性能分析。
2. 相关技术的讨论
一般在软件程序的开发期间对其进行测试。传统上,测试被用于验证软件程 序是否执行计划的功能。随着软件程序变得越来越复杂,性能测试变成开发周期中 越来越重要的组成部分。性能测试支持"性能工程设计"活动,在此期间程序中导 致程序执行延迟的那些部分被标识并被重写以减少执行程序所需的时间。
性能测试通常通过将"探针"插入正在测试的程序内来执行。探针是在执行 时将数据写入日志文件的简单函数。然后可分析日志文件中的数据以确定程序运行 的各个特性。
传统的性能分析工具使用日志文件中的数据来呈现正在测试的软件程序的执 行的汇总的视图。例如,日志文件中的数据可被用于确定正在测试的软件程序中每 一函数被调用的次数。这样的信息可例如向性能工程师揭示特定的函数处于执行次 数多亍计划的循环中。这样的观察可例如指示,可通过重构程序减少该循环执行的 次数来提高该程序的性能。
数据的汇总视图也可指示每一函数执行的平均时间量。如果一函数的平均执 行时间大大超过预期的执行时间,则性能工程师可调查是否有某个事件妨碍了该函 数的执行。
已采用了呈现关于正在测试的软件程序的性能数据以便性能工程师审阅的工 具。这样的工具例如允许性能工程师从多种类型的汇总数据中进行选择,使得性能 工程师可检査正在测试的软件程序的不同方面。这样的工具也可包括时间线视图, 这允许性能工程师查看正在测试的软件程序的活动程度。
发明概述
本发明涉及用于提供关于正在测试的软件程序的性能数据的用户接口。该用 户接口允许性能工程师或其他用户操纵对性能数据的呈现来更容易地标识正在测 试的软件程序中可能引起性能问题的部分。
在一个方面中,本发明涉及显示关于正在测试的软件程序的性能信息的方法。 该方法涉及在第一显示区中显示正在测试的软件程序执行的时间范围的表示。通过 用户接口设备接收指示第一显示区中所显示的时间范围中所指示的部分的用户输
入。在第二显示区中显示多个图形指示符。每一图形指示符表示多个线程之一在该 时间范围的子范围期间的执行中的各个事件。子范围包括第一显示区中所表示的时 间范围的所指示部分。
在另一方面中,本发明涉及其上呈现正在测试的软件程序中多个线程的性能 信息的显示设备。性能信息对多个线程中的每一个包括表示该线程的运行的线程 区。线程区具有至少一个指示符,每一指示符表示该线程的一运行事件,多个线程 的线程区被如此安置,使得多个线程的线程区中的指示符图形地示出这多个线程中 的运行事件在时间上的关联。
在另一方面中,本发明涉及含有用于分析正在测试的软件程序的性能的计算 机可执行组件的计算机可读介质,正在测试的软件程序适于以多个线程执行。计算 机可执行组件包含,数据收集组件,适于收集关于正在测试的软件程序中的多个线 程的执行的数据;分析组件,适于分析所收集的数据以得到关于该多个线程的执行 信息;以及报告组件,适于以人类可感知的形式显示关于这多个线程的至少一部分 的执行信息,人类可感知形式包括对应于该部分中多个线程中的每一个的作为时间 的函数的执行信息的图形表示,该部分中多个线程中的每一个的图形表示以使该部 分中多个线程中的每一个中的各个事件的时间能够相关的格式被显示。
附图简述
附图不旨在被按比例绘制。在附图中,各个附图中示出的每一完全相同或近 乎完全相同的组件由同样的标号表示。为清楚起见,不是每个组件在每张附图中均 被标号。附图中


图1是示出开发环境的略图2是图1的开发环境中的用户接口的略图3是图2的用户接口处于替换运行状态中的略图; 图4是图1的开发环境中的用户接口的替换实施例;以及 图5是图4的用户接口处于替换运行状态中的略图。
详细描述
提供了一种可用于性能分析的改进的性能分析工具。该工具以多种格式呈现 性能分析信息并允许配置以不同格式呈现数据的显示区。可配置性使得诸如性能工 程师的用户能够标识正在测试的程序中发生性能问题的点,并能够"向下钻取"来 标识性能问题的原因。
图1以框图形式示出了可在其中使用这样的工具的开发环境100。开发环境 100可例如在计算机工作站中或服务器上、或一组联网计算机上、或能够执行程序 的任何其它合适的平台上创建。
正在测试的程序110此处被示为由多个进程组成。在图1的示例中,示出了 进程112,、 1122和1123。正在测试的程序110中的进程数目不是本发明的限制。 然而,本发明对分析正在测试的包含众多进程的程序的性能最为有用。
每一进程可执行一 "线程"。线程是程序的一部分,在大多数情况中它在进 程中执行。进程和线程从而是紧密相关的概念。每一线程有其自己的函数调用和其 它程序事件序列。
各独立的进程可在各独立的处理器上执行。然而,各独立的进程可在单个处 理器上创建。处理器资源在进程之间共享,在任何给定时间活动的所有的线程轮流 消耗处理器周期。多个线程可在单个处理器上"虚拟"活动,即使一次只能有一个 进程消耗处理器周期。
相反,无论可用的处理器的数量是多少,线程均有可能会被"阻塞"。多进 程系统包括供在各独立的进程中执行的进程交换数据的机制。如果一线程需要与另 一线程交换数据,而这两个线程可能没有准备好同时交换数据。从而, 一个线程可 能需要等待,直到另一线程执行到准备好交换数据的那个点。当线程等待另一线程 交换数据或执行其它某个功能时,该线程被称为"被阻塞"。线程的"阻塞"是可 能影响程序性能的重要的事件。
在图l中所示的示例中,进程112,、 1122和1123中的每一个使用探针函数测 试,诸如现有技术中可见的那样。当正在测试的程序110执行时,探针函数将数据 写入数据文件120内。在此实施例中,数据文件120被组织为多个缓冲区122,、 1222...1125。在此实施例中,为正在测试的程序110中的每一进程提供一个缓冲区。
当正在测试的程序110执行时,嵌入每一进程112,、 1122和1123的探针被执
行。各独立的进程中的探针将数据值写入与该进程相关联的缓冲区内。以此方式,
每一缓冲区包122,、 1222和1223包含当进程执行时进程内发生的事件的有序列表。 由于线程与进程之间的联系,该信息也可用于标识事件所关联的线程。在所示实施 例中,被写入缓冲区内的每一事件包括对事件及其发生时间的指示。
在所示实施例中,正在测试的程序110被构造成通过预定的应用程序编程接 口 (API)的调用使事件被记录在缓冲区中。在所示示例中,通过预定API的调用 被记录在缓冲区1224中。缓冲区1224存储标识API被调用的部分、进行调用的进 程以及进行调用的时间的信息。
正在测试的程序110在包括操作系统114的平台上执行。在此实施例中,操 作系统114也被配置成将各个事件写入数据文件120。预定事件,诸如异常条件或 磁盘访问,可在操作系统114内被编程以将事件的指示写入数据文件120内。当这 样的事件发生时,该指示被写入缓冲区1225。对事件的指示可包括所发生的具体 事件的标识符、它发生的时间、以及使事件发生的线程的进程。
图1提供了在正在测试的软件程序的执行期间可捕捉的各种类型的事件的示 例。根据本发明的一个实施例,可按照容易使用的方式向人类用户显示多种类型的 事件。例如,SQL事件、OS.内核事件、web服务器事件或任何其它所需类型的事 件均可在数据文件120中捕捉以便进一步分析和显示。
在所示实施例中,在程序110执行之后分析存储在数据文件120中的数据。 该分析由分析程序130执行。在所述实施例中,分析程序BO使存储在每一缓冲区 122,...1225中的事件的时间相关联。可有各种方法用于使每一缓冲区中的事件的时 间相关联。在所述实施例中,创建了索引。索引指示每一缓冲区中的哪个条目对应 于正在测试的程序110的执行期间的特定时间。以此方式,当所分析的数据被处理 时,分析程序130可迅速访问来自每一缓冲区的对应于正在测试的程序110的执行 期间中特定时间点的数据。可自适应地创建索引,使得索引可表示对每一缓冲区中 对应于特定时间发生的事件的位置的估计。当数据文件120被处理时,这些估计可 被更新。然而,可使用形成索引的任何合适的方式。
对存储在数据文件120中的数据进行索引允许分析程序130快速格式化数据 以便以相对于同一时间框架示出不同进程内的各个事件的方式在用户接口 140上 显示。为了使不同进程或线程中的事件相关联,不需相对于绝对标准来跟踪时间。 相反,可相对于正在测试的程序110的执行起始或任何其它方便的时间点来跟踪时
间。时间可例如按照正在测试的程序UO在其上执行的处理器内部的时钟的走时来 丰皮足艮S^。
在所示实施例中,用户接口 140是计算机工作站的一部分。然而,可采用任 何合适的用户接口设备。在此示例中,用户接口 140包括提供输出机制的显示器 142。显示器142可例如是允许将输出提供给人类用户的CRT或TFT显示器。可 使用其它形式的输出设备。例如,可将图形输出打印或投影到屏幕上。或者,输出 可被传递给其它程序或系统来在使用之间进一步分析以便向用户提供信息。
用户接口 140还包括用户接口选择设备。用户接口选择设备允许用户通过用 户接口 140提供可控制分析程序130的运行的输入。在所示实施例中,用户接口 140包括可用于经由用户接口 140提供用户输入的鼠标146。与传统的台式计算机 一样,人类用户可操纵鼠标将光标置于显示器142上,并操作鼠标146上的按钮(即, "点击")来选择作为显示器142上的输入项。用户接口 140可基于按钮被按下时 所处的位置来调用程序对象。
键盘144也可独自或结合鼠标146用作用户接口选择设备。人类用户可使用 键盘144来输入命令、参数或其它适当的信息来经由用户接口 140提供输入。在所 述实施例中,用户输入控制分析程序130来在显示器142上提供期望的显示。
图2示出了可由分析程序130创建且显示在显示器142上以将正在测试的软 件程序执行期间所收集的数据呈现给人类用户的示例用户接口 210。在图2的实施 例中,用户接口 210包含多个区域。在所述实施例中,这些区域被用于对逻辑相关 的信息进行分组。例如,菜单栏212用作定位用户可访问来控制用户接口 210的功 能的命令的区域。包括在菜单栏210中的命令可以是如在传统图形用户接口中使用 的命令,诸如那些打开或关闭特定文件的命令等。命令也可控制用户接口 210的其 余部分中所显示的信息,或可控制用户接口专用的用于显示从正在测试的软件程序 的执行中所收集的性能数据的操作。
在图2所示的实施例中,用户接口 210包含其中显示关于正在测试的软件程 序110的执行的不同、但逻辑相关的类型的信息的三个区域。这些区域包括时间线 域220、线程视图域230和文本视图域260。
时间线域220包括正在测试的软件程序110执行期间活动程度的图形表示。 在此实施例中,活动程度由时间线域220内的阴影示出。例如,区域222比区域 224的阴影少。这种阴影示出,与区域224相比,由区域222表示的时间期间发生 的活动较少,指示区域222所表示的时间期间的活动较少。
在此示例中,正在测试的软件程序110的整个执行由一从左至右移动的时间 线表示。可使用任何合适形式的活动表示。例如,可使用不同的颜色来表示不同的 活动程度。或者,由时间线域220表示的时间线可被表示为直方图,时间线的显示 高度指示正在测试的软件程序110的执行期间任何特定时间的活动程度。
可按照任何合适的方式来度量活动程度。跟踪正在执行的程序所消耗的CPU
时间的百分比的进程监视器在本领域中已知,且可例如被用于创建用来生成诸如
220那样指示活动程度的时间线域的数据。在此实施例中,时间线域220表示执行 正在测试的软件程序110的一部分的所有进程112i、 1122和1123的汇总活动。在 此实施例中,它不包括关于执行属于操作系统114的一部分的程序的进程中的活动 的信息。
时间线域220包括时间指示符226。时间指示符226是用户可操作的控件。例 如,时间指示符226可由用户操作鼠标146 (图l)来选择。用户然后可操作鼠标 146使用如程序接口中常用的拖放动作将时间指示符226滑动到时间线域220上所 需的关注点。以此方式,用户可指定数据文件120 (图l)中所存储的数据的一部 分以便进一步检查。具体地,为时间指示符226所指定的执行时间的子范围收集的 数据可被更详细地显示在线程视图域230中。
如图所示,时间指示符226指示单个时间。可以有用户籍此可指定要在线程 视图域230中显示的时间范围的各个实施例。在此示例中,线程视图域230包含关 于正在测试的软件程序110在以时间指示符226所指示的时间为中心的时间子范围 中的运行的信息。然而,可使用任何合适的惯例。例如,时间线域220可包括多个 指示符, 一个时间指示符标识要在线程视图域230中显示的区间的起点,第二时间 指示符标识要在线程视图域230中显示的结束时间。
无论用于标识要在线程视图域230中显示的时间的子范围的具体机制是什么, 线程视图域230均包含在所选区间中作为正在测试的软件程序110的一部分执行的 线程内的事件的图形表示。在图2所示的实施例中,每一线程由一个区域表示,此 处被示为轨迹(trace)条240,、 2402...2409。此处,示出了九个线程。为其示出事 件的线程的数目不是对本发明的限制。
每一线程内的事件在相应的轨迹条中图形示出。示出了多种类型的事件。事 件的数目和类型仅用于说明,且可显示任何数目或类型的事件。
在图2所示的实施例中,每一轨迹条240" 2402...2409指示其相应线程存在 的时间。在正在测试的程序110的操作中,线程可在各个时间开始和结束,这可在 线程视图域230中图形地表示。
此外,即使线程存在,它也可能仅在其存在的时间的一部分内活动。可使用 对线程活动性的任何合适的度量。然而,在所示实施例中,当线程有操作要执行时 它被认为是"活动"的,即使该线程由于在具有有限数目的处理器的系统中多个进
程的调度而实际并没有在主动地消耗CPU周期。在用户接口210中,使轨迹条240,、 2402...2409视觉地指示相应的线程活动或被阻塞的时期。可使用任何合适的方法来 标识活动或阻塞时期。在此例中,诸如活动指示符242等活动指示符被叠加在轨迹 条上以指示相应线程活动的时间。相反地,诸如在阻塞区间254中那样没有活动指 示符示出相应的线程在特定的区间里被阻塞。
也可在线程视图域230中图形指示其它事件。在此示例中,示出了诸如244 的用户标记。如上结合图1所述,可记录正在测试的软件程序110内的事件。在此 示例中,每一用户标记244是对正在测试的软件程序110的API内的函数进行了 调用的图形指示。系统标记250类似地指示操作系统114所跟踪的事件之一的发生。 在此示例中,系统标记250在视觉上与用户标记224有所区别。颜色、形状或位置 可用于区分不同类型的标记。在图2中指示了多个用户标记。用户标记均由同一图 形符号指示,这可表示同一事件的多次发生。不同类型的用户标记可由相同或不同 的图形符号表示。
线程视图域230包括时间标尺232。每一轨迹条240卜2402...2409内的事件与 时间标尺232相关联。轨迹条内的事件从而彼此相关联。通过在线程视图域230 上左右地阅读,可比较同一时间在多个线程内发生的事件。通过向下阅读线程视图 域230,事件的序列将是显而易见的。
时间标尺232显示时间线域220所表示的时间的子范围。所显示的特定的子 范围可由用户操纵时间指示符226来选择。此外,线程视图域230包括滚动条252。 滚动条提供选择用于显示的时间子范围的替换机制。滚动条252可以是现在已知或 今后开发的用于在图形用户接口中使用的类型的控件。通过使用滚动条252,用户 可将线程视图域230中所显示的时间子范围移换成较早的时间或较晚的时间。在此 实施例中,时间指示符226和滚动条252是相关联的控件,意味着调节时间指示符 226或滚动条252中的任一个均将调节线程视图域230中所显示的时间子范围的中 心点。
能够以相关联方式显示线程内的事件允许人类用户容易地标识程序110内当 正在测试的程序110执行时可能引起性能问题的那些部分。例如,图2指示线程3
在相对较短的时间段内活动,然后变为非活动的。在非活动的期间内,线程4变为 活动并持续相对较长时间。线程4然后变为非活动,而线程3再次变为活动。这样
的模式例如可向人类用户指示,线程3在等待线程4时被阻塞。这样的模式可指示, 通过调査线程4执行所需的时间或线程3实际上是否是为等待线程4而被阻塞,程 序的总体性能可被提高。仅査看汇总的统计数据,这样的情形可能不是显而易见的。 汇总的统计数据可揭示线程3具有较长的执行时间,但不会揭示原因。
图2示出了用户接口 210包括允许获取关于各个线程的执行的附加信息的文 本视图域260。在所示实施例中,线程3和线程4在文本视图域260中被突出显示。 在所述实施例中,用户选择在文本视图域260中要显示哪些域,但也可使用任何合 适的方法来选择要在文本域260中显示的线程。例如,用户可使用鼠标146上的按 钮来访问线程视图域220中所示的线程之一的属性菜单,并在该菜单中选择这些线 程应被显示在文本视图域260中。作为另一示例,用户可使用鼠标146在文本视图 域260内拖放表示所需域的轨迹条。
为在文本域260中显示而选择的每一线程由诸如264,或2642的事件轨迹表示。 每一事件轨迹包括事件轨迹所描绘的线程内的事件的清单。在此示例中,事件轨迹 264,或2642中所列事件表示线程作出的函数调用,以及由线程启动的诸如对特定 API的调用或对操作系统实用程序的访问等标记事件。然而,可显示任何所需类型 的事件。例如,可取代图2中所示的事件或除其以外显示SQL事件、OS内核事件、 web服务器事件等。
文本视图域260包括时间标尺262。时间标尺262指示文本视图域260中所描 绘的事件轨迹描述了正在测试的软件程序110执行的时间子范围内的事件。文本视 图域260中所描绘的时间子范围可以与线程视图域230中所描绘的子范围相同。然 而,在图2的示例中,文本视图域260包括可由用户输入操纵以调节文本视图域 260中所描绘的子范围的中心点的滚动条264。
时间标尺262此处被示为不连续的。在所示实施例中,仅当此时有一事件可 供显示时才在文本视图域260建立一条目。以此方式,连贯的事件彼此相邻显示, 而不考虑这些事件发生的时间间隙。
在图2的示例中,线程视图域230和文本视图域260被同时显示,但具有不 同的大小。在此实施例中,这些域被实现为如常规用户接口中所使用的显示区,且 可按照任何合适的方式被重定大小以增加或减少每一窗口中所示的数据量。而且, 所示实施例在显示器上同时示出时间线域220、文本视图域260和轨迹视图域230。
每一个可在单独的时间显示,或这些域可用任何所需组合同时显示。
文本视图域260可便于分析正在测试的软件程序IIO的性能。在所示示例中, 线程3的事件轨迹264,确认,在时间6处,线程3正等待另一线程。文本视图域 260中可见的附加细节示出线程3在时间5处执行的写数据函数之后等待。事件轨 迹2642指示线程4正执行与写数据相关联的各种操作。事件轨迹2642指示,从时 间10开始,线程4花费大量时间来执行一STRLEN函数。该信息可允许人类用户迅 速标识正在测试的程序.110的性能问题。
通过显示程序执行的线程视图和事件轨迹两者,性能工程师可迅速标识问题 的来源。可使用图形表示来标识要进一步调查的特定区域,且这些特定区域的细节 可以文字形式提供。此外,更改每一域中所示的时间值的子范围的能力还有助于使 性能工程师易于标识问题。例如,线程3和4在时间23处示出类似的模式,指示 在时间23处,线程3可能也在对线程4执行的函数进行调用。然而,在时间23 处示出的实例中,线程4的活动时间比时间5处所示的实例中的短得多。性能数据 的这种模式可指示,当线程3调用写数据函数时,有些时候比起其它时候,操作会 花费长得多的时间。这样的性能模式使得难以从汇总的数据标识哪一函数是特定性 能问题的来源。然而,通过允许用户在可选子范围上检查不同线程中在时间上相关 的事件,可更容易地标识性能问题。
图3示出了用户接口 210的另一特征。在图3所示示例中,展开了线程视图 域230的时间标尺232。在该图示中,其中显示线程视图域230的窗口与图2中的 大小一样,但时间标尺232所覆盖的子范围约为图2所示的1/10。结果,以更高的 分辨率显示了线程视图域230中所示的线程内的事件。时间标尺232的分辨率可例 如基于用户输入来调节。用户可例如使用鼠标146 (图l)将光标置于时间标尺232 上,并右击该域以打开属性对话框或允许用户输入指定时间标尺232的所需分辨率 的信息的其它控件。然而,可使用提供输入的任何合适的方法来指定时间标尺。
图3示出了与文本视图域260相关联的时间标尺262也具有可编程的分辨率。 在图3的示例中,时间标尺262的分辨率与时间标尺232的分辨率匹配。然而,可 使用任何合适的手段来设置时间标尺262的分辨率,且时间标尺262的分辨率不必 与时间标尺232的分辨率匹配。
图3示出了可通过改变诸如232或262的时间标尺的分辨率来实现的优点。 在图2所示的分辨率下,线程4显现为在函数一STRLEN上花费长时间。使用图3 所示的分辨率,可看到线程4在函数一STRLEN内花费的时间的一部分花费在调用诸如一funcl的其它函数上。
图3还示出用户接口 210的另一方面。通过操纵鼠标146 (图1),光标312 可被置于一事件的任何图形表示上。可获取关于用户接口 210中图形描绘的每一事 件的附件信息。在图3的示例中,用户将光标312置于标记344上。用户可提供输 入,诸如右击标记344或仅将光标"悬停"在标记344上。响应于该用户输入,分 析程序130可在文本框310中提供关于该标记的附加信息。出现在文本框310中的 信息可取决于用户所选的图形对象所表示的具体事件,且可在显示器上提供关于任 何所需事件——包括SQL事件、OS内核事件或web服务器事件的信息。
图4示出了根据本发明的替换实施例的用户接口410。在该实施例中,文本视 图域460配备诸如430i、 4302和4303的多个选项卡。可通过用户接口由操纵鼠标 146将光标置于选项卡上方并对其点击来选择每一选项卡。每一选项卡当其被选中 时,可在文本视图域460内显示不同种类的信息。选项卡430,呈现关于诸如有时 由现有技术中的性能分析系统呈现的函数的汇总信息。当被选中时,选项卡43(^ 显示列出正在测试的软件程序110执行期间所调用的函数的列420,。相邻列提供 关于列420,中所列出的每一函数的信息。例如,列4202指示正在测试的软件程序 110的执行期间所记录的进入该函数的次数。列4203指示该函数内汇总的执行时 间。该选项卡中所呈现的信息是汇总或统计信息,它并不以编年基准来示出事件。
当选项卡4302被选中时,它可显示类似于现有技术的性能分析系统中所显示 的调用树的一调用树。可由性能分析系统生成的、不论是现在已知还是在今后开发 的任何其它类型的数据均可通过提供可被选中来访问该数据的选项卡选择性地为 人类用户显示。可激活选项卡4303来提供诸如图3中所描绘的事件轨迹。
图4示出了用户接口 410的附加方面。在此示例中,线程视图域230正示出 在图2中所示的时间子范围之后的时间子范围。从而,时间指示符226较之图2 出现在时间线域220中更靠右方。
图5示出用户接口 410的又一方面。可基于用户输入来选择线程视图域230 中所表示的线程。允许用户选择线程通过允许用户在不同的轨迹中并置的事件图形 表示来推动标识性能问题的过程。以此方式,用户可标识线程之间的依赖关系,并 标识由这些依赖关系所引起的性能问题。
图5给出了可用于允许用户选择用于显示的线程的一种机制的示例。在此示 例中,用户接口 410在菜单栏212上包括选择区510。选择区510可被实现为如传 统上在图形用户接口中所使用的菜单项,当其被选中时将打开列表框512。
列表框512包括正在测试的程序110中的线程的列表,每一个旁边均带有一
个复选框。每一复选框进而是当被选中时使相应线程被包括在线程视图窗口 230
中所显示的线程列表中的控件。
线程选择的其它方面也可通过用户接口 410中的控件来实现。例如,控件可 允许用户指定线程在线程视图窗口 230中的排序。
上述特征向用户提供以便于容易地理解多线程程序的动态交互的方式组织关 于正在测试的程序的性能数据的能力。它提供多层向下钻取,这允许性能工程师或 其它用户使用有效的过程来对程序进行性能工程设计。在典型的情形中,该过程可 包括使用时间线域220来标识程序执行期间值得进一步调查的子区域。例如,可标 识并进一步调查其中发生密集活动或非常少活动的子区域。
一旦选择了要进一步研究的子区域之后,可检查该子区域中的具体线程。用 户可调节线程视图域230中要显示的时间标尺,以更好地标识单个线程内的各点或 是线程间交互的组合减慢程序执行的点。线程视图域230中的视觉指示符,诸如标 记和活动条可引导用户标识问题区。
用户然后可通过选择要显示在文本视图窗口 460中的某些线程来获取关于这 些线程的具体交互的更详细的信息。可按照编年的格式呈现事件,或可呈现函数或 其它程序元素的汇总数据。
显示区如在众多图形用户接口中常见的那样可打开、关闭、最小化或在显示 屏上重新放置使得用户可自定义显示的外观。
可按照无论是现在已知还是今后开发的任何合适的方式,来实现用户接口中 的控件。例如,软件开发环境通常具有允许菜单项被包括在程序的图形用户接口中 的可扩展接口。此外,这样的开发环境也允许具有为应用程序定制的动作的预定义 控件被包括到图形用户接口内。诸如滚动条、文本框以及下拉式列表的控件均是当 前已知的用于图形用户接口中的控件的示例,且可例如被实现为Active-X对象。
在操作中,可按照任何合适的方式生成在图形用户接口上所显示的信息。如 上所述,在缓冲区中收集关于事件的信息。对缓冲区进行索引使得能够容易地处理 信息。如本领域中已知的,分析程序130可计算汇总数据。分析程序130也可使用 缓冲区中按时间排序的信息来标识信号通知开始和结束的事件。
分析程序可以是使用诸如〔++等任何合适的程序设计语言来准备的程序。它 可被存储在与任何合适的处理器相关联的计算机可读介质中,这些处理器诸如有与 性能工程师所使用的工作站相关联的处理器。至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术 人员可容易地想到各种更改、修改和改进。
这样的更改、修改和改进旨在是本公开的一部分,且旨在处于本发明的精神 和范围内。从而,前述描述和附图仅用作示例。
可按照众多方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、 软件或其组合来实现各实施例。当使用软件实现时,软件代码可在无论是在单个计 算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器的集合上 执行。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台 中任何一种的一个或多个处理器上执行的软件。此外,可使用多种合适的程序设计 语言和/或常规程序设计或脚本工具中的任何一种来编写这样的软件,它们且可被 编译为可执行机器语言代码。
在此方面,本发明可被具体化为编码了一个或多个程序的一个或多个计算机 可读介质(例如,计算机存储器、 一个或多个软盘、紧致盘、光盘、磁带等),当 这些程序在一个或多个计算机或其它处理器上执行时,它们执行实现本发明上述各 个实施例的方法。这一个或多个计算机可读介质可以是可移动的,使得其上存储的 程序可被加载到一个或多个不同的计算机或其它处理器上以便实现本发明上述的 各个方面。
此处以一般的意义使用术语"程序",来指可被用来对计算机或其它处理器 编程以实现本发明上述的各个方面的任何类型的计算机代码或指令集。此外,应理 解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机 程序不必驻留在单个计算机或处理器上,而可以模块化的方式分布在多个不同的计 算机或处理器之间以实现本发明的各方面。
本发明的各个方面可单独、组合或使用未在前述实施例中特别讨论的各种安 排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安 排。例如, 一个实施例中描述的各方面可使用任何方式与另一实施例中描述的各方 面组合。
在权利要求书中使用诸如"第一"、"第二"、"第三"等序数词来修饰权 利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、 先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的 一个权利要求元素与具有同一名字(除序数词的使用之外)的另一元素区分开的标
签以区分各权利要求元素。
而且,此处所用的短语和术语是为描述起见而不应被认为是限制。此处对"包 括"、"包含"、或"具有"、"含有"、"涉及"及其变型的使用旨在包括其后 所列的项目及其等效物以及其它项目。
权利要求
1.在含有包括显示器和用户接口设备的图形用户接口的计算机系统中,一种显示关于正在测试的软件程序的性能信息的方法,所述正在测试的软件程序适于在多个各自适于执行的线程中执行,所述方法包括以下步骤a)在第一显示区中显示所述正在测试的软件程序执行的时间范围的表示;b)通过所述用户接口设备接收指示所述第一显示区中所显示的所述时间范围的指示部分的用户输入;以及c)在第二显示区中显示多个图形指示符,每一图形指示符表示所述多个线程之一在所述时间范围的子范围期间的执行中的事件,所述子范围包括所述第一显示区中所表示的所述时间范围的所述指示部分。
2. 如权利要求l所述的方法,其特征在于,a) 所述第一显示区中的时间范围的表示包括图形表示;以及b) 所述用户接口设备包括定点设备,且接收指示所述时间范围的指示部分的 用户输入包括感知所述用户使用了所述定点设备来拖曳所述时间范围的一部分的 指示符,并将其放在所述时间范围的所述图形表示的一位置上。
3. 如权利要求l所述的方法,其特征在于,所述正在测试的软件程序以一活 动程度执行,且所述第一显示区还包括所述正在测试的软件程序的执行的活动程度 的图形表示。
4. 如权利要求l所述的方法,其特征在于,还包括接收指示所述第二显示区 的时间标尺的用户输入,以及响应于所述指示时间标尺的用户输入调节所述子范 围。
5. 如权利要求4所述的方法,其特征在于,所述第二显示区还包括滚动条, 并且所述方法还包括通过所述用户接口设备接收移动所述滚动条的用户输入,以及 响应于所述移动滚动条的用户输入调节所述第二显示区中所显示的所述子范围。
6. 如权利要求l所述的方法,其特征在于,还包括在第三显示区中显示至少 一个文字表示,所述文字表示包括对由所述第二显示区中的图形标识符所表示的所 述多个线程之一的执行中的各事件的指示,所述事件包括在所述线程内进行的函数 调用。
7. 如权利要求6所述的方法,其特征在于,所述正在测试的软件程序包括当所述正在测试的软件程序执行时被执行的函数,且在第三显示区中显示还包括a) 接收指定要在所述第三显示区显示的所述文字信息的属性的用户输入;以及b) 响应于所述指定文字信息的属性的用户输入,选择性地显示表征所述正在 测试的软件程序内各函数的执行的特征的汇总信息。
8. 如权利要求l所述的方法,其特征在于,其中a) 所述正在测试的软件程序包括在包含操作系统的平台上执行的应用程序;以及b) 显示表示事件的多个图形指示符包括,指示对所述操作系统的预定部分或 对所述正在测试的软件程序的预定部分的函数调用的执行。
9. 一种显示设备,该显示设备上绘制在正在测试的软件程序的执行期间运行 的多个线程的性能信息,在所述正在测试的软件程序的执行期间时常发生运行事 件,对于所述多个线程中的每一个,所述性能信息包括表示所述线程的运行的线程区,所述线程区具有至少一个指示符,每一指示 符表示所述线程的一运行事件,所述多个线程中每一个的线程区被如下安置,以使 得所述多个线程的线程区中的指示符图形地示出所述多个线程中的运行事件在时 间上的关联。
10. 如权利要求9所述的显示设备,其特征在于,所述线程区中的每一个在 所述显示屏上包括一拉长的区域,且在所述多个线程区的至少一部分内, 一指示符 表示由所述线程区表示的线程因等待另一线程而被阻塞的时间范围。
11. 如权利要求9所述的显示设备,其特征在于,所述线程区中的每一个在 所述显示屏上包括一拉长的区域,且在所述多个线程区的至少一部分内, 一指示符 表示由所述线程区表示的线程在活动的时间范围。
12. 如权利要求10所述的显示设备,其特征在于,所述多个线程区的至少其 中之一包括表示从由所述线程区表示的所述线程内访问一预定函数的指示符。
13. 如权利要求12所述的显示设备,其特征在于,所述正在测试的软件程序 是运行在操作系统上的应用程序,并且所述预定函数包括所述应用程序内的函数。
14. 如权利要求9所述的显示设备,其特征在于,还包括与所述线程区相邻 的时间标尺区,所述时间标尺区与所述由指示符表示的多个线程中的所述事件在时 间上相关联。
15. 如权利要求9所述的显示设备,其特征在于,还包括时间线区,所述时 间线区图形地指示在所述正在测试的软件程序的执行期间的处理强度。
16. 如权利要求9所述的显示设备,其特征在于,还包括文字区,所述文字 区包括至少一个线程的运行期间的事件的有序清单,所述事件有序清单包括函数进入、函数退出以及由SQL事件、OS内核事件和web服务器事件组成的组中的至 少一个事件。
17. —种含有用于分析正在测试的软件程序的性能的计算机可执行组件的计 算机可读介质,所述正在测试的软件程序适于在多个线程中执行,所述计算机可执行组件包括a) 数据收集组件,适于收集关于所述正在测试的软件程序中的所述多个线程 的执行的数据;b) 分析组件,适于分析所收集的数据以得到关于所述多个线程的执行信息;以及C)报告组件,适于以人类可感知的形式显示关于所述多个线程的至少一部分 的执行信息,所述人类可感知形式包括对应于所述部分中的多个线程中的每一个的 作为时间的函数的执行信息的图形表示,所述部分中所述多个线程中的每一个的图 形表示以使所述部分中所述多个线程中的每一个中的各个事件的时间能够相关联 的格式被显示。
18. 如权利要求17所述的计算机可读介质,其特征在于,所述报告组件适于 显示所述多个线程的至少其中之一的图形表示,所述图形表示包括对何时至少一个 线程在等待来自所述多个线程中的另一线程的响应时被阻塞的指示。
19. 如权利要求18所述的计算机可读介质,其特征在于,所述正在测试的软 件程序适于在包括可执行预定事件的操作系统的平台上执行,并且所述报告组件适 于显示对所述部分中所述多个线程的至少其中之一的图形表示,所述图形表示包括 对所述线程是否触发所述操作系统执行所述预定事件的指示。
20. 如权利要求18所述的计算机可读介质,其特征在于,所述正在测试的软 件程序包括至少一个API,所述数据收集组件适于收集指示所述API被访问的数 据,并且所述报告组件适于显示所述部分中所述多个线程的至少其中之一的图形表 示,所述图形表示包括对是否是从所述线程内访问了所述API的指示。
全文摘要
一种用于显示软件的性能测试信息的系统(140)。该系统包括以允许容易地标识性能问题及其原因的格式来显示信息的图形用户接口(210)。该接口包括描绘正在测试的程序在执行期间的活动程度(222,224,226)的时间线视图(220)。程序执行期间的时间子范围中的事件可使用揭示组成该程序的各线程的交互的信息来被显示。可在其它显示域中显示附加信息,包括文字信息(264)。所显示的信息当中许多是以图形表示的,这使性能工程师能够迅速地标识问题区来进一步调查。
文档编号G06F9/44GK101208659SQ200680009047
公开日2008年6月25日 申请日期2006年4月3日 优先权日2005年4月15日
发明者E·C·李, S·M·卡罗尔, S·默查姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1