1 Go 1.21的PGO正式GA,性能提升,更快更猛!-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Go 1.21的PGO正式GA,性能提升,更快更猛!

OSC开源社区 来源:OSC开源社区 2023-06-28 16:47 次阅读

Go 1.21 首个 RC 已发布。

虽然这是 Go 1.21 的第一个 RC,但它的版本号却是go1.21rc2。因为开发团队在为 RC1 打上 tag 后就发现了一个 bug,所以他们马上基于该版本进行了修复并发布更新。

2cf80ca8-14d6-11ee-962d-dac502259ad0.png

Go 1.21 主要变化包括:提升性能、改进工具链和添加新的标准库,以及语言方面的变更。

其中值得关注的一大更新是——在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO) 功能现已正式 GA。

2d344fce-14d6-11ee-962d-dac502259ad0.png

Profile-guided optimization (PGO) 是计算机编程中的一种编译器优化技术,翻译过来是使用配置文件引导的优化。

PGO 也被称为:

Profile-directedfeedback (PDF)

Feedback-directed optimization (FDO)

它的原理是编译器使用程序的运行时 profiling 信息,生成更高质量的代码,从而提高程序的性能。

PGO 作为一项通用的编译器优化技术,不局限于某一门语言。比如Rust 编译器也在探索使用 PGO,微软则采用LTO+PGO 来优化 Linux 内核。

在 Go 语言中,最初关于 PGO 的提案是建议向 Go GC 工具链增加对配置文件引导优化 (PGO) 的支持,以便工具链能根据运行时信息执行特定于应用程序和工作负载的优化。

对于刚刚发布的 Go 1.21,根据 Go 团队的介绍,如果主软件包目录中存在名为default.pgo的文件,go命令将使用它来启用 PGO 构建。

他们还测试了 PGO 对多种 Go 程序的影响,发现性能提高了 2-7%。

此外,Go 编译器本身已经在 1.21 中启用 PGO 进行了重建,因此它构建 Go 程序的速度也提高了 2-4%,不过这具体取决于主机架构。

Go 1.21 其他变化:

语言变更

添加新的内置函数:min, max 和 clear

对泛型函数的类型推断进行了多项改进,包括扩展和解释清楚规范中类型推断的描述

在未来版本中,开发团队计划解决 Go 编程中最常见的问题之一:循环变量捕获 (loop variable capture)。Go 1.21 附带了此功能的预览版,目前可以使用环境变量在代码中启用该功能。

添加新的标准库

log/slog 包:用于结构化日志记录

slices 包:增用于对任何元素类型的切片进行常见操作,这个包比 sort 包更快、更符合人体工程学

maps 包:用于对任何类型 key-value 进行常见操作

cmp 包:用于比较有序值 (ordered values)

优化性能

除了启用 PGO 时的性能改进之外:

Go 编译器本身已经在 1.21 中启用 PGO 进行了重建,因此它构建 Go 程序的速度提高了 2-4%,具体取决于主机架构

由于垃圾收集器的调整,某些应用程序的尾部延迟可能会减少高达 40%

现在使用runtime/trace收集跟踪在 amd64 和 arm64 上产生的 CPU 开销要小得多

支持 WASI

Go 1.21 已实验性支持WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1,GOARCH=wasm)。

为了方便编写更通用的 WebAssembly (WASM) 代码,编译器还支持从 WASM 主机导入函数的新指令:go:wasmimport。

提到 WebAssembly,刚好本周六 (7.1)举办的「源创会」有一个和它相关的演讲分享。

演讲主题:Moonbit 编程语言平台简介

主题内容:Moonbit 是由张宏波老师带领的基础软件中心团队开发的一个专为云计算、边缘计算设计的编程语言平台,这个项目包括了面向 WebAssembly 生态设计的一款应用型编程语言及其相关完整的配套工具链。

本次演讲主要介绍这个项目动机背景、宏观方向上的设计考量,以及目前的进展,并且会有现场 demo 进行一些编程语言特性的演示。

嘉宾介绍:张钰,粤港澳大湾区数字经济研究院开发工程师,Moonbit 平台核心开发人员,编程语言理论爱好者

是的,我们正式重启了和大家阔别已久的「源创会」——2023 年首场于本周六(7.1)在深圳举办,诚邀各位 oscer 们前来赴约。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1623

    浏览量

    49107
  • go语言
    +关注

    关注

    1

    文章

    158

    浏览量

    9047

原文标题:Go 1.21的PGO正式GA,性能提升,更快更猛!

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何提升漆包线的导电性能

    提升漆包线导电性能的方法 1. 选择合适的导体材料 导体材料的选择对漆包线的导电性能有着直接的影响。铜和铝是最常见的导体材料,它们各有优缺点: 铜 :铜的导电性能优于铝,但价格较高。铜
    的头像 发表于 12-09 09:25 161次阅读

    汽车制动系统如何提升刹车性能

    汽车制动系统的刹车性能是确保行车安全的关键因素之一。为了提升刹车性能,可以从以下几个方面进行改进和优化: 一、选用高性能制动部件 刹车片 : 原厂刹车片通常采用少金属配方,摩擦系数较低
    的头像 发表于 11-28 09:47 294次阅读

    NPU技术如何提升AI性能

    设计的处理器,与传统的CPU和GPU相比,它在执行深度学习任务时具有更高的效率和更低的能耗。NPU通过专门优化的硬件结构和指令集,能够更快地处理神经网络中的大量并行计算任务。 1. 优化硬件架构 NPU技术通过优化硬件架构来提升AI性能
    的头像 发表于 11-15 09:11 411次阅读

    CDCE949如何使用Clock Pro 1.21来计算寄存器的值,并导出配置信息呢?

    如何使用 Clock Pro 1.21来计算寄存器的值,并导出配置信息呢?使用这个软件脱机运行一直不能输入信息。
    发表于 11-13 07:58

    go语言如何解决并发问题

    作为一个后端开发,日常工作中接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发速度真的是比
    的头像 发表于 10-23 13:38 132次阅读
    <b class='flag-5'>go</b>语言如何解决并发问题

    韩国服务器的性能如何提升

    韩国服务器的性能可以通过硬件升级、网络优化、缓存优化和软件优化来提升。具体方法如下,rak小编为您整理发布韩国服务器的性能如何提升
    的头像 发表于 08-15 11:33 238次阅读

    三十分钟入门基础Go Java小子版

    前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言。Go 语言
    的头像 发表于 08-12 14:32 717次阅读
    三十分钟入门基础<b class='flag-5'>Go</b> Java小子版

    安森美GaN功率器件iGaN NCP5892x系列简单容易

    系列,集成eGaN与驱动电路一体化,让电源工程师在GaN的应用简单容易, 现成的集成GaN驱动器 GaN器件是最高性能的开关,提供极低的静态和动态损耗。当与驱动器共同封装时,它们在高性能电源转换器设计中简单应用,可满足严格的能
    的头像 发表于 07-23 10:21 559次阅读
    安森美GaN功率器件iGaN NCP5892x系列<b class='flag-5'>更</b>简单容易

    ARM发布旗舰手机芯片:性能提升、AI性能增强、节能减耗

    ARM为Cortex-X系列CPU重新命名,以强调其性能的显著提升。据称,X925的单核性能较X4提升了36%(依据Geekbench测试结果)。此外,由于配备了高达3MB的私有L2缓
    的头像 发表于 05-30 11:26 660次阅读

    联想将推出搭载AMD Z1系列处理器的Legion Go拯救者掌机“Lite”版

     据WindowsCentral报道,相关知情人士透露,联想正研发Legion Go拯救者掌机的“Lite”版本,将采用AMD Z1系列处理器,性能较上一代有所提升
    的头像 发表于 05-27 17:45 807次阅读

    如何修改Kernel Affinity提升openplc性能

    如何修改Kernel Affinity提升openplc性能
    发表于 05-22 06:36

    新火种AI|如何看待AI蹭热点,合成假新闻?官方:治疗AI乱象,务必下

    针对AI造谣乱象,官媒明确发声:欲去“沉疴”还需“药”。
    的头像 发表于 04-19 21:59 232次阅读
    新火种AI|如何看待AI蹭热点,合成假新闻?官方:治疗AI乱象,务必下<b class='flag-5'>猛</b>药

    手机信号放大器:提升手机信号,让通讯畅快?

    手机信号放大器:提升手机信号,让通讯畅快?|深圳特信电子
    的头像 发表于 03-19 09:04 1741次阅读

    三星Galaxy S24 Ultra相机性能显著提升:2亿像素、更大传感器、更快

    三星表示,新款Galaxy S24系列手机已将相机的快门延迟全面降低,其中Galaxy S24 Ultra所搭载的2亿像素的主摄像头更为突出,这项提升使相机能更快捕捉瞬间。
    的头像 发表于 03-08 13:54 1071次阅读

    让“可靠”变得“更快安全”的数据传输协议:SCTP

    SCTP(Stream Control Transmission Protocol,流控传输协议)的出现,并不是万丈高楼平地起,而是站在TCP这个巨人肩膀上,让数据传输从“可靠”变得“更快安全”。
    的头像 发表于 12-28 17:25 1399次阅读
    让“可靠”变得“<b class='flag-5'>更快</b><b class='flag-5'>更</b>安全”的数据传输协议:SCTP