数组与切片:访问速度
在 Go 中,切片和数组是两个密切相关的数据结构,用于存储以下元素特定的数据类型。虽然它们有相似之处,但一个关键区别在于访问速度,特别是在比较全局实例和本地实例时。
基准结果:
为了评估性能差异,使用以下函数进行基准测试:
结果一致显示全局数组的访问速度比全局切片更快。然而,本地切片明显优于本地数组。
说明:
为了确定这种差异的原因,本地数组和切片基准函数的 amd64 汇编已检查。
这表明本地切片受益于有效的寄存器利用,而本地数组通过不断加载数组的
此外,数组版本会调用runtime.duffcopy函数,这是一个冗长的汇编例程,而切片版本则不会。这进一步加剧了性能差异。
以上是Go 数组与切片:为什么本地切片访问比本地数组访问更快?的详细内容。更多信息请关注PHP中文网其他相关文章!