跳过正文
  1. 面试题库/

12|Go代码性能优化相关

·358 字·1 分钟
目录
Golang面试题库 - 这篇文章属于一个选集。
§ 12: 本文

1. 你知道 Go 的哪些性能优化手段?
#

分析

Go 代码性能优化就两个:内存分配优化并发优化,其余不值一提。

一般建议是:用过对象池,知道内存逃逸大概怎么定位,就可以在简历里面写 Go 程序性能优化了。并发优化都是看场景的,不强求。

回答:

  • Go 内存分配优化:核心就是内存逃逸和对象池。

    • 内存逃逸优化:属于那种听上去逼格很高,但是实际上效果非常有限的优化。将 SQL 优化一下,几十几百毫秒省出来了;但是 Go 内存分配优化来优化,可能也就优化了 1 毫秒。

      一般是使用下面命令来看哪里发生了逃逸,然后“尝试优化掉”:

      go build -gcflags '-m'
      
    • 对象池:可以使用 Go 官方提供的 sync.Pool。一般来说,如果有什么接口是要处理比较大批量数据的,就可以考虑这种方案。

  • 并发优化:主要思路就是有锁改无锁;写锁改读写锁;原子操作(CAS 也可以看是乐观锁)。

    • 并发优化这个在业务开发里面比较少用。
Golang面试题库 - 这篇文章属于一个选集。
§ 12: 本文