Sun Studio 12:Fortran 用户指南

3.4.166 –xprofile={ collect[:name]| use[:name]| tcov}

使用运行时文件配置数据收集或优化,或执行基本块覆盖分析。

通过为编译器提供运行时性能反馈,增强了使用高优化级别 (-xO5) 进行编译的效果。为了生成编译器执行最佳优化所需的配置文件反馈,您必须先使用 -xprofile=collect 进行编译,再对典型数据集运行可执行文件,然后在最高优化级别使用 -xprofile=use 重新编译。

collect[: name]

优化器使用 -xprofile=use 收集并保存执行频率数据以备将来使用。编译器生成可测量语句执行频率的代码。

name 是所分析程序的名称。该名称是可选的。如果未指定 name,则假定 a.out 为可执行程序的名称。

在运行时,使用 -xprofile=collect:name 编译的程序在缺省情况下会创建子目录 name.profile 来保存运行时反馈信息。程序将其运行时配置文件数据写入该子目录中名为 feedback 的文件。如果多次运行程序,那么执行频率数据会累积在 feedback 文件中;也就是说,以前运行的输出不会丢失。

您可以设置环境变量 SUN_PROFDATASUN_PROFDATA_DIR,来控制使用 -xprofile=collect 编译的程序在其中写入其运行时配置文件数据的文件和目录。设置这些变量后,使用 -xprofile=collect 编译的程序会将其配置文件数据写入 $SUN_PROFDATA_DIR/$SUN_PROFDATA中。

这些环境变量同样控制由 tcov 写入的配置文件数据文件的路径和名称,如 tcov(1) 手册页中所述。

配置文件集合是“MT 安全的”。也就是说,对于通过使用 -mt 进行编译并直接调用多任务库来执行自身多任务处理的程序,如果对它进行文件配置将产生准确的结果。

当在不同的步骤中进行编译和链接时,如果 -xprofile=collect 出现在编译步骤中,那么在链接步骤中也必须指定它。

use[: nm]

使用执行频率数据有策略地在优化级别 -xO5 进行优化。

collect:nm 一样,nm 是可选的,可用于指定程序的名称。

程序是使用以前生成并保存在配置文件数据文件中的执行频率数据优化的,此数据是先前执行用 -xprofile=collect 编译的程序时写入的。

源文件和其他编译器选项必须与用于编译的源文件和编译器选项完全一致,该编译创建了生成 feedback 文件的编译程序。如果使用 -xprofile=collect:nm 进行编译,则相同的程序名称 nm 必须出现在以下优化编译中:-xprofile=use:nm

有关加速收集阶段和使用阶段之间的编译的说明,另请参见 -xprofile_ircache

有关控制编译器在哪里查找配置文件数据文件的说明,另请参见 -xprofile_pathmap

tcov

使用“新”样式的 tcov 的基本块覆盖分析。优化级别必须是 -O2 或更高级别。

代码指令与 -a 选项的代码指令类似,但不再为每个源文件生成 .d 文件。相反,会生成一个文件,并且该文件的名称是根据最终的可执行文件命名的。例如,如果 stuff 是可执行文件,则 stuff.profile/tcovd 是数据文件。

运行 tcov 时,您必须将 -x 选项传递给它,以便它使用新式数据。否则,tcov 使用原来的 .d 文件(如果有;这是数据的缺省值),并产生不可预测的输出。

-a 选项不同,TCOVDIR 环境变量在编译时不起作用。但是,在程序运行时会使用它的值来确定在哪里创建配置文件子目录。

有关详细信息,请参见 tcov(1) 手册页、《Fortran 编程指南》的“性能剖析”一章以及 Program Performance Analysis Tools 手册。


注 –

如果因 -O4-inline 而存在子程序的内联处理,则 tcov 生成的报告可能不可靠。不会记录对已经内联的例程的调用的覆盖。