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 们前来赴约。

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

    关注

    1

    文章

    1669

    浏览量

    51079
  • go语言
    +关注

    关注

    1

    文章

    159

    浏览量

    9625

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Altera发布 Quartus® Prime 专业版和 FPGA AI 套件 25.3 版:编译更快,智能更强

    更快速的编译 。 相较于 25.1 版,25.3 版可进一步提供 行业领先的编译时间 、 显著提升的设计效率 和 更少的时序收敛迭代 ,并 加速产品上市 。 编译速度提升多达 6%,自 Agilex 7
    的头像 发表于 11-13 09:24 4.7w次阅读
    Altera发布 Quartus® Prime 专业版和 FPGA AI 套件 25.3 版:编译<b class='flag-5'>更快</b>,智能更强

    树莓派5超频指南:安全高效地提升性能

    为什么要对树莓派5进行超频?对树莓派进行超频,可通过提高CPU和GPU的时钟频率来释放额外的性能。在需要额外处理能力以提高响应速度、减少延迟或处理繁重工作负载的场景中,超频尤其有益。性能提升
    的头像 发表于 08-14 17:45 1810次阅读
    树莓派5超频指南:安全高效地<b class='flag-5'>提升</b><b class='flag-5'>性能</b>!

    能效提升3倍!异构计算架构让AI跑得更快省电

    电子发烧友网报道(文/李弯弯)异构计算架构通过集成多种不同类型的处理单元(如CPU、GPU、NPU、FPGA、DSP等),针对不同计算任务的特点进行分工协作,从而在性能、能效和灵活性之间实现最优平衡
    的头像 发表于 05-25 01:55 3451次阅读

    快手上线鸿蒙应用高性能解决方案:数据反序列化性能提升90%

    近日,快手在Gitee平台上线了鸿蒙应用性能优化解决方案“QuickTransformer”,该方案针对鸿蒙应用开发中广泛使用的三方库“class-transformer”进行了深度优化,有效提升
    发表于 05-15 10:01

    炬芯科技与玛携手打造LARK MAX 2无线监听麦克风,端侧AI率先落地

    近日,知名无线音视频品牌玛发布旗舰新品无线监听麦克风LARK MAX 2,行业首创“无线麦克风+无线监听耳机”融合性设计,全新一代LARK MAX 2无线麦在音质、延迟、无线传输性能和功耗等方面
    的头像 发表于 04-18 13:04 600次阅读
    炬芯科技与<b class='flag-5'>猛</b>玛携手打造LARK MAX 2无线监听麦克风,端侧AI率先落地

    BK150-800S35GA1D6 BK150-800S35GA1D6

    电子发烧友网为你提供AIPULNION(AIPULNION)BK150-800S35GA1D6相关产品参数、数据手册,更有BK150-800S35GA1D6的引脚图、接线图、封装手册、中文资料、英文
    发表于 03-21 18:38
    BK150-800S35<b class='flag-5'>GA</b>1D6 BK150-800S35<b class='flag-5'>GA</b>1D6

    DA10-220E0524GA9N4 DA10-220E0524GA9N4

    电子发烧友网为你提供AIPULNION(AIPULNION)DA10-220E0524GA9N4相关产品参数、数据手册,更有DA10-220E0524GA9N4的引脚图、接线图、封装手册、中文资料
    发表于 03-18 18:53
    DA10-220E0524<b class='flag-5'>GA</b>9N4 DA10-220E0524<b class='flag-5'>GA</b>9N4

    FA10-220S24GA2N4 FA10-220S24GA2N4

    电子发烧友网为你提供AIPULNION(AIPULNION)FA10-220S24GA2N4相关产品参数、数据手册,更有FA10-220S24GA2N4的引脚图、接线图、封装手册、中文资料、英文资料,FA10-220S24GA2
    发表于 03-18 18:51
    FA10-220S24<b class='flag-5'>GA</b>2N4 FA10-220S24<b class='flag-5'>GA</b>2N4

    DA5-220E0524GA9N4 DA5-220E0524GA9N4

    电子发烧友网为你提供AIPULNION(AIPULNION)DA5-220E0524GA9N4相关产品参数、数据手册,更有DA5-220E0524GA9N4的引脚图、接线图、封装手册、中文资料、英文
    发表于 03-18 18:44
    DA5-220E0524<b class='flag-5'>GA</b>9N4 DA5-220E0524<b class='flag-5'>GA</b>9N4

    上海光机所在n型β-Ga2O3单晶光电性能调控方面取得进展

    Letters。 β-Ga2O3作为新型极/超宽禁带半导体材料,性能优异、应用广泛、潜力巨大。Ga2O3单晶作为功率器件应用的前提是需要有效的对β-电学性能进行调控,因此
    的头像 发表于 02-28 06:22 710次阅读
    上海光机所在n型β-<b class='flag-5'>Ga</b>2O3单晶光电<b class='flag-5'>性能</b>调控方面取得进展

    国睿安泰信 GA4063-TG 带信号源 GA4033 数字频谱分析仪

    国睿安泰信 GA4063-TG 带信号源 GA4033 数字频谱分析仪 GA40XX系列3G频谱分析仪采用数字中频转换和信号处理链,通过全数字中频技术、集成RF微带电路技术,高频宽带小数分频逐点锁相
    的头像 发表于 02-21 17:56 751次阅读

    FDD网络性能提升的方法

    提升FDD(Frequency Division Duplex,频分双工)网络性能的方法可以从多个方面入手,以下是一些具体的策略: 一、硬件升级与优化 升级硬件设备 : 更换为性能更强的基带处理器或
    的头像 发表于 01-07 17:16 1228次阅读

    EE-306:PGO linker-面向Blackfin处理器的代码布局工具

    电子发烧友网站提供《EE-306:PGO linker-面向Blackfin处理器的代码布局工具.pdf》资料免费下载
    发表于 01-05 09:43 0次下载
    EE-306:<b class='flag-5'>PGO</b> linker-面向Blackfin处理器的代码布局工具

    BNC插座使用技巧:提升信号传输性能的秘诀

    的使用技巧,帮助用户提升信号传输性能。 正确的安装和固定是确保BNC插座性能的基础。首先,应选择合适的安装位置,避免插座受到机械应力或振动的影响。使用专用的固定工
    的头像 发表于 12-24 09:19 904次阅读
    BNC插座使用技巧:<b class='flag-5'>提升</b>信号传输<b class='flag-5'>性能</b>的秘诀

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

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