我敢肯定,每个人都知道golang知道,博客文章在这里。
再读一遍,我想知道是否使用gccgo代替代替go build会增加速度。在我的典型用例(科学计算)中,gccgo-生成的二进制总是比go build-生成的二进制更快。
因此,只需获取以下文件:havlak6.go并对其进行编译:
go build havlak6.go -O havlak6_go
gccgo -o havlak6_gccgo -march=native -Ofast havlak6.go
惊喜 !
$/usr/bin/time ./havlak6_go
5.45user 0.06system 0:05.54elapsed 99%CPU
$/usr/bin/time ./havlak6_gccgo
11.38user 0.16system 0:11.74elapsed 98%CPU
我很好奇,想知道为什么“优化”的编译器的确会产生较慢的代码。
我试图gprof在gccgo生成的二进制文件上使用:
gccgo -pg -march=native -Ofast havlak6.go
./a.out
gprof a.out gmon.out
没有运气:
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
如您所见,该代码尚未实际分析。
当然,我读过这篇文章,但是如您所见,该程序需要10秒钟以上的时间才能执行...样本数量应> 1000。
我也尝试过:
rm a.out gmon.out
LDFLAGS='-g -pg' gccgo -g -pg -march=native -Ofast havlak6.go
./a.out
gprof
也没有成功。
你知道怎么了吗 您是否有一个想法,为什么gccgo它的所有优化例程都无法比gc在这种情况下更快?
go版本:1.0.2 gcc版本:4.7.2
慕雪6442864
相关分类