由于我最近刚开始接触golang这门语言,还没有大量时间去深入研究了解golang的特性和机制,目前接到一个任务,要求测试golang在buildmode=pie时性能损失的问题。
我自己写的测试的逻辑是,大量调用CGO内的函数、变量,和非main包的函数、变量,以及main包其他文件的函数、变量,循环执行多次,分别获取开始和结束时间计算用时,但是没有发现明显的性能损失。(性能损失在1%-2%)
疑惑点:
1. buildmode=pie 会影响go的性能吗?
2. 主要是从哪些方面影响?比如用到哪些特性时,buildmode=pie和buildmode=exe的性能差距比较大?
3. 我发现使用buildmode=exe --ldflags '-linkmode=external -extld=gcc -extldflags "-pie"' 也可以使最终文件具有pie的二进制特征,而且大量测试上性能相较于buildmode=pie有微乎其微(0.5%)的提升。
4. go语言目前的性能优化都是从哪些方面入手的?有没有从构建选项上入手获得优化的案例?
还请帮忙解惑,或者有没有相关资料介绍一下。
有疑问加站长微信联系(非本文作者)