美文网首页Tips
Go 语言中的一些可优化项

Go 语言中的一些可优化项

作者: Sun东辉 | 来源:发表于2022-05-20 08:37 被阅读0次
    • 通过 GODEBUG 查看当前调度哪里有问题
    • 设置 GOGC,设置的值较大时,可以减少 GC 的频率,但也同时会增加触发 GC 的堆的大小,可能会产生 OM。
    • 涉及文件,CGO 较多的程序,可以通过设置 GOMAXPROCS 将 P 增大runtime.GOMAXPROCS(GOMAXPROCS(0)+1
    • 使用协程池,通过隔离减少栈扩容和缩容。有些场景下栈扩容和缩容消耗CPU(可结合pprof查看morestack)比较多,比如长连接,大量维持连接的协程可以不用扩容栈,复杂任务交给任务协程处理,此类协程的数量比较少。
    • 对于频繁分配到对象,可以使用 sync.Pool,减少分配频次,进而降低 GC 的频率。
    • 全局缓存对象有大量的 key 的时候,value 少用指针。这是因为 GC 并发 mark 时会标记存活的对象,如果 value 里指针较多,会导致 mark 消耗的 CPU 很大,此时,使用 struct 内嵌消除数据指针是一个不错的选择。
    • slice 和 map 在创建时就应该初始化容量,减少不断加元素是的扩容。
    • 慎用 Go 语言黑魔法

    相关文章

      网友评论

        本文标题:Go 语言中的一些可优化项

        本文链接:https://www.haomeiwen.com/subject/ixrxprtx.html