关于《Go程序优化101》

本书将列出一些Go编程中的一些性能优化技巧和建议。本书中的大多数内容是基于官方标准编译器和运行时的实现而做出的。

生活中,我们常常需要做出一些折衷妥协。编程亦如是。 在编程中,我们常常需要在代码简洁性、可读性、可维护性、开发效率和程序运行效率等指标之间进行折衷。 即使对于其中的一个指标,也常常需要各种折衷权衡。 以程序运行效率为例,我们很可能需要在节省内存、代码运行速度和实现难度等方面进行折衷。

在实际项目中,大多数环节的实现代码其实并不要求达到极高的效率。 这些代码的可读性和可维护性常常更为重要。 本书列出的这些建议只是为确实需要高性能的环节提供一些代码实现建议。 其中的一些建议常常会导致更为繁琐的代码。 另外需要注意的是,其中的某些建议实现可能在某些场景是高效的,但对于另一些场景却未必。 所以请按需采纳这些建议。

本书中的建议包括:

本书不解释如何使用性能分析工具(比如pprof)。 本书也不深究Go编译器和运行时的实现细节。 本书提供的所有建议和技巧均不使用非类型安全指针和cgo。 本书不讨论算法。 换句话说,本书尽量使用浅显易懂的方式来提供一些优化建议,希望这些建议对日常Go编程有所帮助。

如果没有特别指出,本书的例子代码运行于一台如下配置和环境的笔记本上:

go version go1.19 linux/amd64
goos: linux
goarch: amd64
cpu: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz

为了排版整齐,本书中各个基准测试输出中的用例运行次数信息被删除了。

请注意:

关于本书作者

本书作者为老貘,也就是《Go 101》一书的作者。 老貘正计划完成更多《Go 101》系列丛书。敬请期待。

老貘曾(没准儿以后会重新成)为一个独立游戏开发者(他开发的游戏)。

你的赞赏是Go 101系列丛书不断改进和增容的动力:

反馈

欢迎各位在Go 101中文项目 (https://github.com/golang101/golang101) 中的问题列表中提交在本书中发现的各种问题和对这些问题的改正。

欢迎关注本书的微信公众号:Go 101(可在微信中搜索“go 101”或者“golang101”,或者扫描下面的二维码)。

本书的twitter帐号为 @Golang_101 (中文 https://twitter.com/Golang_101) 和 @go100and1 (英文 https://twitter.com/go100and1)。


目录↡

Go101.org网站内容包括Go编程各种相关知识(比如Go基础、Go优化、Go细节、Go实战、Go测验、Go工具等)。后续将不断有新的内容加入。敬请收藏关注期待。

本丛书微信公众号(联系方式一)名称为"Go 101"。二维码在网站首页。此公众号将时不时地发表一些Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。

《Go语言101》系列丛书项目目前托管在Github上(联系方式二)。欢迎各位在此项目中通过提交bug和PR的方式来改进完善《Go语言101》丛书中的各篇文章。我们可以在项目目录下运行go run .来浏览和确认各种改动。

本书的twitter帐号为@Golang_101(联系方式三)。玩推的Go友可以适当关注。

你或许对本书作者老貘开发的一些App感兴趣。

The English version of this book is here.
赞赏
(《Go语言101》系列丛书由老貘从2016年7月开始编写。目前此系列丛书仍在不断改进和增容中。你的赞赏是本系列丛书和此Go101.org网站不断增容和维护的动力。)

目录: