为了账号安全,请及时绑定邮箱和手机立即绑定

在sync.Once的上下文中“热路径”是什么意思?

在sync.Once的上下文中“热路径”是什么意思?

Go
犯罪嫌疑人X 2023-08-07 18:54:41
go版本:1.13.4 在源码sync/once.go中,以下注释提到了“热路径”:type Once struct {    // done indicates whether the action has been performed.    // It is first in the struct because it is used in the hot path.    // The hot path is inlined at every call site.    // Placing done first allows more compact instructions on some architectures (amd64/x86),    // and fewer instructions (to calculate offset) on other architectures.    done uint32    m    Mutex}我的问题是:这里的“热路径”是什么意思?“它位于结构中的第一个”是否会使“热路径”访问更有效?为什么?
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

热路径是非常频繁执行的指令序列。

当访问结构体的第一个字段时,我们可以直接取消对结构体指针的引用来访问第一个字段。要访问其他字段,除了结构指针之外,我们还需要提供距第一个值的偏移量。

在机器代码中,此偏移量是与指令一起传递的附加值,这使得指令更长。对性能的影响是 CPU 必须将偏移量与结构指针相加,以获得要访问的值的地址。

因此,访问结构体第一个字段的机器代码更加紧凑、速度更快。

请注意,这假设内存中字段值的布局与结构定义中的布局相同。


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信