美文网首页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 语言中的一些可优化项

    通过 GODEBUG 查看当前调度哪里有问题[https://www.jishuchi.com/read/gin-...

  • go语言中的方法

    go支持OO语言的一些特性,方法就是其中之一。本文将介绍go语言中方法相关的概念。 方法声明 在go语言中,我们可...

  • Go语言指针

    Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语...

  • 冒泡排序(Go版本)

    本篇文章是在<>基础之上进行的优化。上面文章的代码: 1、代码优化 利用go语言中函数特性,可以...

  • TODO:Go语言goroutine和channel使用

    TODO:Go语言goroutine和channel使用 goroutine是Go语言中的轻量级线程实现,由Go语...

  • Go的内存管理

    本文翻译自Memory Management in Go,介绍了Go语言中内存管理的相关概念。 所有的计算机程序语...

  • 【go语言学习】函数function

    函数是组织好的、可重复使用的、用于执行指定任务的代码块。Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属...

  • Golang查询SqlServer数据库

    Go语言中查询SqlServer数据库 一、Go语言中查询MsSQL数据库: // main.go package...

  • go 指针

    Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 我们都知道,变量是一种使用方便的占...

  • 2020-07-20

    go 语言中的环境(GOPATH和GOROOT) 对于go语言的新手,理解go语言中的两个环境变量GOROOT和G...

网友评论

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

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