我敢肯定,每个人都知道golang知道,博客文章在这里。再读一遍,我想知道是否使用gccgo代替代替go build会增加速度。在我的典型用例(科学计算)中,gccgo-生成的二进制总是比go build-生成的二进制更快。因此,只需获取以下文件:havlak6.go并对其进行编译:go build havlak6.go -O havlak6_gogccgo -o havlak6_gccgo -march=native -Ofast havlak6.go惊喜 !$/usr/bin/time ./havlak6_go5.45user 0.06system 0:05.54elapsed 99%CPU$/usr/bin/time ./havlak6_gccgo11.38user 0.16system 0:11.74elapsed 98%CPU我很好奇,想知道为什么“优化”的编译器的确会产生较慢的代码。我试图gprof在gccgo生成的二进制文件上使用:gccgo -pg -march=native -Ofast havlak6.go./a.outgprof a.out gmon.out没有运气:Flat profile:Each sample counts as 0.01 seconds. no time accumulated如您所见,该代码尚未实际分析。当然,我读过这篇文章,但是如您所见,该程序需要10秒钟以上的时间才能执行...样本数量应> 1000。我也尝试过:rm a.out gmon.outLDFLAGS='-g -pg' gccgo -g -pg -march=native -Ofast havlak6.go./a.outgprof也没有成功。你知道怎么了吗 您是否有一个想法,为什么gccgo它的所有优化例程都无法比gc在这种情况下更快?go版本:1.0.2 gcc版本:4.7.2
1 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
在Valgrind下运行gccgo生成的二进制文件似乎表明它gccgo
的内存分配器效率低下。这可能是gccgo
4.7.2慢于go
1.0.2的原因之一。无法在Valgrind下运行go 1.0.2生成的二进制文件,因此在这种情况下很难确定内存分配是否是gccgo的主要性能问题。
- 1 回答
- 0 关注
- 270 浏览
添加回答
举报
0/150
提交
取消