谁能向我解释一下profile-generate
和pg
选项之间的区别?
两者都将生成配置文件数据。但它们的用法不同。
fprofile-generate
是生成包含分析信息的二进制文件,当您使用 fprofile-use
再次编译它时,您可以重复使用这些信息向编译器提供反馈。
例如:
$ gcc -fprofile-generate filename.c
如果执行由 about 命令生成的二进制文件,它将生成一个名为 filename.gcda
的文件,其中包含配置文件数据。
再次使用 fprofile-use
编译它时:
$ gcc -fprofile-use filename.c
这一次,gcc将使用来自filename.gcda
的数据来进一步优化。
当你执行用-pg
编译的二进制文件时,它将生成gmon.out
,以后可以使用gprof
命令分析代码。这更像是静态分析,它将提供有关代码路径的信息。