聊聊 Go 的边界检查消除技术

鸟窝 at 
聊聊 Go 的边界检查消除技术的配图
在翻译的从慢速到 SIMD 一文中, SourceGraph 工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理 Go 的边界检查消除技术。为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?这篇文章发布到几个平台之后,很多 Gopher 都在问这个问题的答案,包括《100 个 Go 语言典型错误》的作者也在 twitter 上询问,再比如 Hacker ……