暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Golang 1.21带来了内置函数和基于性能分析的优化

云原生数据库 2023-06-29
271
Google的Go编程语言的最新更新版本Go 1.21现已作为发布候选版发布。新版本增加了内置函数——min、max和clear,并使基于性能分析的优化(PGO)普遍可用。此外,还强调了对WebAssembly的适应性。
min和max函数分别计算固定数量的参数或有序类型的最小值或最大值。必须至少有一个参数。clear函数接受map、slice或类型参数类型的参数,并删除或清除所有元素。
Go 1.21发布候选版于6月21日发布,可以从项目网站下载,由于在go1.21.rc1之后发现并修复了一个错误,因此该版本被标记为RC2。预计正式发布将在8月份。
基于性能分析的优化(PGO)在2月份的Go 1.20中作为预览版推出,现在在新版本中升级为正式版。PGO使编译器工具链能够根据运行时配置文件信息进行工作负载特定和应用程序特定的优化。到目前为止,Go项目开发人员表示,在广泛的程序集上测量影响时,PGO已经将性能提高了2%到7%。Go编译器已经重新构建,并启用了PGO。
Go 1.21承诺提供额外的性能改进。调整垃圾收集器可能会导致一些应用程序的尾延迟降低高达40%,而使用runtime/trace收集跟踪现在在AMD64和Arm64系统上的CPU成本要小得多。
在Go 1.21的其他方面:
  • Go 1.21还预览了一个实验性的WASI(WebAssembly System Interface)端口。为了帮助编写更通用的WebAssembly代码,编译器还支持从Wasm主机导入函数的新指令wasmimport。
  • 标准库添加了一个新的log/slog包,用于结构化日志记录。
  • 提供了一个新的slices包,用于对任何元素类型的切片进行常见操作。这包括通常比sort包更快且更符合人体工程学的排序函数。
  • 标准库还添加了一个新的maps包,用于对任何键或元素类型的映射进行常见操作。一个新的cmp包包括用于比较有序值的新实用程序。
  • go工具现在支持向后和向前的语言兼容性。改进了泛型函数的类型推断。在规范中扩展和澄清了类型推断的描述。
  • Go的一个常见“陷阱”是循环变量捕获,Go 1.21预览了这种能力,可以通过环境变量在代码中启用。未来版本的Go将解决这个问题。


文章转载自云原生数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论