Go 1.23版本在性能方面进行了多项显著提升,主要包括以下几个方面:
1. 编译性能优化
-
Profile-Guided Optimization (PGO): 在Go 1.23中,使用PGO的构建时间显著减少。之前,启用PGO时,大型构建可能会导致超过100%的构建时间增加,而在新版本中,这一开销已降低到单数字的百分比[1][5]。
-
堆栈使用减少: 编译器现在能够重叠局部变量的堆栈帧槽,这减少了Go应用程序的堆栈使用,从而提升了整体性能[1][3]。
2. 热块对齐
- 热块对齐: 对于386和amd64架构,编译器会利用PGO的信息来对循环中的热块进行对齐。这一改进可以进一步提高1-1.5%的性能,尽管会增加0.1%的文本和二进制大小[1][5]。
3. 内存分配器优化
- 内存分配器行为: 优化了内存分配器的行为,特别是在大内存(带有指针)分配时,减少了长时间的暂停现象。这一改进有助于提升应用程序的响应性和性能[2][6]。
4. 标准库的改进
- Timer和Ticker的实现更改: Go 1.23中,
time.Timer
和time.Ticker
的实现进行了改进,使得不再被程序引用的定时器能够立即被垃圾回收。这一变化有助于减少内存占用和提高性能[5][6]。
这些性能提升使得Go 1.23在构建速度、运行效率和内存管理等方面表现更为出色,进一步增强了其作为系统编程语言的优势。
Citations:
[1] https://www.infoworld.com/article/3486408/go-1-23-arrives-with-faster-pgo-build-times.html
[2] https://tonybai.com/2024/05/30/go-1-23-foresight/
[3] https://go.dev/blog/go1.23
[4] https://www.youtube.com/watch?v=tOESPitTVwE
[5] https://tip.golang.org/doc/go1.23
[6] https://juejin.cn/post/7402781870659174451
[7] https://blog.csdn.net/ra681t58cjxsgckj31/article/details/141272419
[8] https://www.oschina.net/news/306953/golang-1-23-released