引入SSA之后,Go语言程序的执行性能将明显提升

gisos 8年前

Keith Randall从2015年初就开始设计Go编译器的SSA(Static Single Assignment,静态单赋值)后端。将原来的IR转换成SSA形式的IR,可以引入更多优化,比如更好的公共子表达式消除、无用代码消除、寄存器分配和栈帧分配等,从而生成效率更高的指令。当然,编译速度可能会受到影响。

在探讨Go 1.7的开发计划时,Russ Cox就提到,在Go 1.7开发周期开始的时候,Keith想把基于SSA的编译器合并到主干代码中。(https://groups.google.com/forum/#!topic/golang-dev/TerfinvPffw) 
近日,Keith Randall给出了与go1.6相比较的一组基准测试数据:

640.jpg

可以看出,大部分情况下执行速度有明显改进。

至于编译速度,以编译net/http为例(go test -a -c -gcflags=-d=ssa/check/off net/http) , 与go1.6相比,新的编译器大约慢7%。
期待随着编译器的不断优化,编译时间能进一步减少。

来源:臧秀涛 开发资讯