开发高性能应用程序需要综合运用编译器功能、优化例程库以及性能分析工具。
Sun Studio 软件提供了一对用于收集和分析程序性能数据的高级工具:
收集器按称为剖析的统计方式收集性能数据。这些数据包括调用栈、微观统计信息、线程同步延迟数据、硬件计数器上溢数据、地址空间数据以及操作系统的汇总信息。
性能分析器用于显示收集器记录的数据,从而可以检查相应信息。分析器处理数据,并在程序、函数、调用者-被调用者、源码行和反汇编指令级别显示性能的各种度量。这些度量分为三组:基于时钟的度量、同步延迟度量和硬件计数器度量。
性能分析器还可通过创建映射文件(可以使用该映射文件来改进函数在应用程序地址空间中的装入顺序)来协助优化应用程序性能。
这两个工具有助于回答以下各种问题:
程序消耗的可用资源有多少?
最消耗资源的是哪些函数或负载对象?
哪些源码行和反汇编指令耗用的资源最多?
程序在执行过程中如何出现这种问题?
函数或负载对象消耗的是哪些资源?
性能分析器主窗口显示程序函数列表,其中有每个函数的互斥及相容度量。可以用加载对象、线程、轻量进程 (LWP) 和时间片来过滤此列表。对于选中的函数,辅助窗口会显示此函数的调用者和被调用者。有些情况下(例如,搜索高度量值时),可以使用该窗口在调用树中进行导航。另两个窗口显示源代码和反汇编代码,源代码以性能度量逐行进行注解并与编译器注释穿插在一起,反汇编代码以每条指令的度量进行注解。如果可用,源代码和编译器注释将与这些指令穿插在一起。
收集器和分析器适用于所有软件开发人员,尽管性能优化并不是开发人员的主要职责。与常用剖析工具 prof 和 gprof 相比,它们提供了更加灵活、详细和准确的分析,并且不会受 gprof 中属性错误的影响。
收集器和分析器均有等效的命令行方式:
可以使用 collect(1) 命令收集数据。
可以从 dbx 中使用 collector 子命令运行收集器。
命令行实用程序 er_print(1) 可输出 ASCII 形式的各种分析器显示信息。
命令行实用程序 er_src(1) 可显示标注了编译器注释的源代码与反汇编代码列表,但不包含性能数据。
有关详细信息,请参见 Sun Studio《Program Performance Analysis Tools》手册。