提高Go的GOGC变量能提升性能

17-02-13 banq
    

GOGC是Go语言用于垃圾回收性能微调,GOGC 变量是设置初始的垃圾收集百分比。 当新分配的数据与上一个收集之后剩余的实时数据的比率达到该百分比时,触发垃圾收集 。

这里有一个设置权衡:“ 如果你想减少在GC上花费的总时间,增加GOGC,但是内存必须足够大。 如果你的内存少,你只能用更频繁的GC时间以节省内存,那么降低GOGC值'。

A profiling adventure to speed up Go 一文中谈到,他们使用Go进行大数据处理,使用很多goroutines作为管道进行数据处理,导致性能非常差,他们将GOGC设置为500以后,最大可能会使用70GB,每条记录处理性能延迟从300μs降低110μs,使用Go 1.8RC3替代Go 1.6,每条记录延迟又降低了 25μs到80μs。