程序
测试程序 test.cpp ( 仅仅是示例,本程序并不会有性能提升):
#include <stdlib.h>
int m =
50200000;
char arr[
4] = {
'1',
'2',
'3',
0};
long test() {
long sum =
0;
int a =
0;
for (a =
0; a < m; ++a) {
sum += atoi(arr+(a%
2));
}
}
int main(
int argc,
const char *argv[])
{
test();
return 0;
}
编译:
原始程序:
g
++ -O2 -o origin
生成trace的程序:
g
++ -O2 -o trace
运行采样
./
trace
这时候会在当前目录生成 test.gcda
针对采样重新编译:
g
++ -O2 -fprofile-use -o optimized
最后,生成的 optimized 程序是优化后的二进制文件。
性能对比
用 time 命令查看优化前后的执行时间
time ./origin
time ./optimized
参考文献
https://dom.as/2009/07/27/profile-guided-optimization-with-gcc/http://cboard.cprogramming.com/tech-board/111902-pgo-amazing.htmlhttps://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options
转载请注明原文地址: https://ju.6miu.com/read-1311654.html