第 102 期 2020-08-19 官方标准编译器中实现的优化集锦

YouTube 回看

第102 期官方标准编译器中实现的优化集锦

官方标准编译器对卯足某些形式的语句或者表达式进行了特殊的优化,从而使得这些语句的执行和这些表达式的估值过程比预期得要快。

大纲

  • 字符串相关优化
  • 容器操作相关优化
  • BCE优化
  • 其它各种优化

分享者自我介绍

老貘,《Go 101》一书作者。

计划分享时间

2020-08-19 21:00:00 UTC+8

分享地址

Zoom 直播:

Bilibili 直播:

https://live.bilibili.com/h5/11171965

Slides

(todo)

参考资料预格式化文本

3赞

ppt: https://github.com/yaxinlx/go-nightreading-optimizations

有一个小发现,“优化1” 中我并未按照代码示例做的时候,发现结果都是 0,于是尝试使用 demo,发现结果是 0,1。在尝试中发现,将 strings.Repeat(“go”, 1024) 中的 1024 修改到 16 及以内时,结果都是 0。在两个平台都测试了,结果是一致的,是不是小的字符串也进行了优化呢?

str = strings.Repeat("go", 16)

请问 PPT 中代码是在那个版本进行测试的呢?我在 1.14.1 的 Windows 上版本得到的结果和 PPT 中的结果有一些出入,其中有关 slice 或者 string,最明显的区别在长度 32;其次优化 11,只有 0 和 非 0 的区别,并未发现 255 和 256 有区别。

对,这个是这样的。官方编译器对小字符串做了一下不太好描述的优化。

优化11是Go官方工具链1.15引入的。

优化9我用1.10版本的go才能看出效果,新版的看不出什么差别。后来我把结构体的字段数加到10用新版的go(1.15)看出了效果

我用Go 1.15在windows和Linux上结果差不多,都是4到5有一个跃迁。