我最近一直在研究 PGO 和 LTO 如何显着优化程序速度(有人说大约 20%)。我目前只是在 C 中编程并在 Windows 中使用 GTK+ 构建 GUI(通过 GCC 编译所有内容)并且只使用 -O2 进行优化。
我一直在阅读以使用标志进行编译
gcc -Wall -g -mwindows -O3 -fprofile-generate -flto example.c -o example.exe `pkg-config --cflags --libs gtk+-3.0`
一个 .gcno 和一个 .gcda 文件被创建,然后你运行编译的 .exe 多次,然后再次重新编译相同的 .c 文件,但将“-fprofile-generate”与“-fprofile-use”交换?(同时确保所有这些文件都保留在同一个文件夹/目录中,并为第二次编译的 .exe 使用不同的名称)
gcc -Wall -g -mwindows -O3 -fprofile-use -flto example.c -o program.exe `pkg-config --cflags --libs gtk+-3.0`
还是您以某种方式使用 .gcno/.gcda 文件?另请阅读有关使用“基准”的内容。
问题:
在 GCC 中使用它的步骤是什么?(分步指南会有所帮助:)