0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-06-28 16:47 ? 次閱讀

Go 1.21 首個 RC 已發(fā)布。

雖然這是 Go 1.21 的第一個 RC,但它的版本號卻是go1.21rc2。因為開發(fā)團(tuán)隊在為 RC1 打上 tag 后就發(fā)現(xiàn)了一個 bug,所以他們馬上基于該版本進(jìn)行了修復(fù)并發(fā)布更新。

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

Go 1.21 主要變化包括:提升性能、改進(jìn)工具鏈和添加新的標(biāo)準(zhǔn)庫,以及語言方面的變更。

其中值得關(guān)注的一大更新是——在 1.20 中處于預(yù)覽階段的啟用配置文件引導(dǎo)優(yōu)化 (PGO) 功能現(xiàn)已正式 GA。

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

Profile-guided optimization (PGO) 是計算機(jī)編程中的一種編譯器優(yōu)化技術(shù),翻譯過來是使用配置文件引導(dǎo)的優(yōu)化。

PGO 也被稱為:

Profile-directedfeedback (PDF)

Feedback-directed optimization (FDO)

它的原理是編譯器使用程序的運(yùn)行時 profiling 信息,生成更高質(zhì)量的代碼,從而提高程序的性能。

PGO 作為一項通用的編譯器優(yōu)化技術(shù),不局限于某一門語言。比如Rust 編譯器也在探索使用 PGO,微軟則采用LTO+PGO 來優(yōu)化 Linux 內(nèi)核。

在 Go 語言中,最初關(guān)于 PGO 的提案是建議向 Go GC 工具鏈增加對配置文件引導(dǎo)優(yōu)化 (PGO) 的支持,以便工具鏈能根據(jù)運(yùn)行時信息執(zhí)行特定于應(yīng)用程序和工作負(fù)載的優(yōu)化。

對于剛剛發(fā)布的 Go 1.21,根據(jù) Go 團(tuán)隊的介紹,如果主軟件包目錄中存在名為default.pgo的文件,go命令將使用它來啟用 PGO 構(gòu)建。

他們還測試了 PGO 對多種 Go 程序的影響,發(fā)現(xiàn)性能提高了 2-7%。

此外,Go 編譯器本身已經(jīng)在 1.21 中啟用 PGO 進(jìn)行了重建,因此它構(gòu)建 Go 程序的速度也提高了 2-4%,不過這具體取決于主機(jī)架構(gòu)。

Go 1.21 其他變化:

語言變更

添加新的內(nèi)置函數(shù):min, max 和 clear

對泛型函數(shù)的類型推斷進(jìn)行了多項改進(jìn),包括擴(kuò)展和解釋清楚規(guī)范中類型推斷的描述

在未來版本中,開發(fā)團(tuán)隊計劃解決 Go 編程中最常見的問題之一:循環(huán)變量捕獲 (loop variable capture)。Go 1.21 附帶了此功能的預(yù)覽版,目前可以使用環(huán)境變量在代碼中啟用該功能。

添加新的標(biāo)準(zhǔn)庫

log/slog 包:用于結(jié)構(gòu)化日志記錄

slices 包:增用于對任何元素類型的切片進(jìn)行常見操作,這個包比 sort 包更快、更符合人體工程學(xué)

maps 包:用于對任何類型 key-value 進(jìn)行常見操作

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

優(yōu)化性能

除了啟用 PGO 時的性能改進(jìn)之外:

Go 編譯器本身已經(jīng)在 1.21 中啟用 PGO 進(jìn)行了重建,因此它構(gòu)建 Go 程序的速度提高了 2-4%,具體取決于主機(jī)架構(gòu)

由于垃圾收集器的調(diào)整,某些應(yīng)用程序的尾部延遲可能會減少高達(dá) 40%

現(xiàn)在使用runtime/trace收集跟蹤在 amd64 和 arm64 上產(chǎn)生的 CPU 開銷要小得多

支持 WASI

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

為了方便編寫更通用的 WebAssembly (WASM) 代碼,編譯器還支持從 WASM 主機(jī)導(dǎo)入函數(shù)的新指令:go:wasmimport。

提到 WebAssembly,剛好本周六 (7.1)舉辦的「源創(chuàng)會」有一個和它相關(guān)的演講分享。

演講主題:Moonbit 編程語言平臺簡介

主題內(nèi)容:Moonbit 是由張宏波老師帶領(lǐng)的基礎(chǔ)軟件中心團(tuán)隊開發(fā)的一個專為云計算、邊緣計算設(shè)計的編程語言平臺,這個項目包括了面向 WebAssembly 生態(tài)設(shè)計的一款應(yīng)用型編程語言及其相關(guān)完整的配套工具鏈。

本次演講主要介紹這個項目動機(jī)背景、宏觀方向上的設(shè)計考量,以及目前的進(jìn)展,并且會有現(xiàn)場 demo 進(jìn)行一些編程語言特性的演示。

嘉賓介紹:張鈺,粵港澳大灣區(qū)數(shù)字經(jīng)濟(jì)研究院開發(fā)工程師,Moonbit 平臺核心開發(fā)人員,編程語言理論愛好者

是的,我們正式重啟了和大家闊別已久的「源創(chuàng)會」——2023 年首場于本周六(7.1)在深圳舉辦,誠邀各位 oscer 們前來赴約。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1640

    瀏覽量

    49200
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    158

    瀏覽量

    9061

原文標(biāo)題:Go 1.21的PGO正式GA,性能提升,更快更猛!

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

    電子發(fā)燒友網(wǎng)站提供《EE-306:PGO linker-面向Blackfin處理器的代碼布局工具.pdf》資料免費下載
    發(fā)表于 01-05 09:43 ?0次下載
    EE-306:<b class='flag-5'>PGO</b> linker-面向Blackfin處理器的代碼布局工具

    如何提升漆包線的導(dǎo)電性能

    提升漆包線導(dǎo)電性能的方法 1. 選擇合適的導(dǎo)體材料 導(dǎo)體材料的選擇對漆包線的導(dǎo)電性能有著直接的影響。銅和鋁是最常見的導(dǎo)體材料,它們各有優(yōu)缺點: 銅 :銅的導(dǎo)電性能優(yōu)于鋁,但價格較高。銅
    的頭像 發(fā)表于 12-09 09:25 ?241次閱讀

    力源電池-紐扣電池系列:CR系列鋰扣式產(chǎn)品介紹

    深圳鴻合智遠(yuǎn)|力源電池-紐扣電池系列:CR系列鋰扣式產(chǎn)品介紹
    的頭像 發(fā)表于 12-02 11:03 ?220次閱讀
    力源電池-紐扣電池系列:CR系列鋰<b class='flag-5'>猛</b>扣式產(chǎn)品介紹

    汽車制動系統(tǒng)如何提升剎車性能

    汽車制動系統(tǒng)的剎車性能是確保行車安全的關(guān)鍵因素之一。為了提升剎車性能,可以從以下幾個方面進(jìn)行改進(jìn)和優(yōu)化: 一、選用高性能制動部件 剎車片 : 原廠剎車片通常采用少金屬配方,摩擦系數(shù)較低
    的頭像 發(fā)表于 11-28 09:47 ?491次閱讀

    NPU技術(shù)如何提升AI性能

    設(shè)計的處理器,與傳統(tǒng)的CPU和GPU相比,它在執(zhí)行深度學(xué)習(xí)任務(wù)時具有更高的效率和更低的能耗。NPU通過專門優(yōu)化的硬件結(jié)構(gòu)和指令集,能夠更快地處理神經(jīng)網(wǎng)絡(luò)中的大量并行計算任務(wù)。 1. 優(yōu)化硬件架構(gòu) NPU技術(shù)通過優(yōu)化硬件架構(gòu)來提升AI性能
    的頭像 發(fā)表于 11-15 09:11 ?577次閱讀

    CDCE949如何使用Clock Pro 1.21來計算寄存器的值,并導(dǎo)出配置信息呢?

    如何使用 Clock Pro 1.21來計算寄存器的值,并導(dǎo)出配置信息呢?使用這個軟件脫機(jī)運(yùn)行一直不能輸入信息。
    發(fā)表于 11-13 07:58

    go語言如何解決并發(fā)問題

    作為一個后端開發(fā),日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認(rèn),PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負(fù)擔(dān),字符串和整型壓根就不用區(qū)分,開發(fā)速度真的是比
    的頭像 發(fā)表于 10-23 13:38 ?157次閱讀
    <b class='flag-5'>go</b>語言如何解決并發(fā)問題

    韓國服務(wù)器的性能如何提升

    韓國服務(wù)器的性能可以通過硬件升級、網(wǎng)絡(luò)優(yōu)化、緩存優(yōu)化和軟件優(yōu)化來提升。具體方法如下,rak小編為您整理發(fā)布韓國服務(wù)器的性能如何提升
    的頭像 發(fā)表于 08-15 11:33 ?269次閱讀

    三十分鐘入門基礎(chǔ)Go Java小子版

    前言 Go語言定義 Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)、強(qiáng)類型、編譯型語言。Go 語言
    的頭像 發(fā)表于 08-12 14:32 ?760次閱讀
    三十分鐘入門基礎(chǔ)<b class='flag-5'>Go</b> Java小子版

    安森美GaN功率器件iGaN NCP5892x系列簡單容易

    系列,集成eGaN與驅(qū)動電路一體化,讓電源工程師在GaN的應(yīng)用簡單容易, 現(xiàn)成的集成GaN驅(qū)動器 GaN器件是最高性能的開關(guān),提供極低的靜態(tài)和動態(tài)損耗。當(dāng)與驅(qū)動器共同封裝時,它們在高性能電源轉(zhuǎn)換器設(shè)計中簡單應(yīng)用,可滿足嚴(yán)格的能
    的頭像 發(fā)表于 07-23 10:21 ?595次閱讀
    安森美GaN功率器件iGaN NCP5892x系列<b class='flag-5'>更</b>簡單容易

    聯(lián)想將推出搭載AMD Z1系列處理器的Legion Go拯救者掌機(jī)“Lite”版

     據(jù)WindowsCentral報道,相關(guān)知情人士透露,聯(lián)想正研發(fā)Legion Go拯救者掌機(jī)的“Lite”版本,將采用AMD Z1系列處理器,性能較上一代有所提升
    的頭像 發(fā)表于 05-27 17:45 ?846次閱讀

    如何修改Kernel Affinity提升openplc性能?

    如何修改Kernel Affinity提升openplc性能
    發(fā)表于 05-22 06:36

    新火種AI|如何看待AI蹭熱點,合成假新聞?官方:治療AI亂象,務(wù)必下

    針對AI造謠亂象,官媒明確發(fā)聲:欲去“沉疴”還需“藥”。
    的頭像 發(fā)表于 04-19 21:59 ?260次閱讀
    新火種AI|如何看待AI蹭熱點,合成假新聞?官方:治療AI亂象,務(wù)必下<b class='flag-5'>猛</b>藥

    手機(jī)信號放大器:提升手機(jī)信號,讓通訊暢快?

    手機(jī)信號放大器:提升手機(jī)信號,讓通訊暢快?|深圳特信電子
    的頭像 發(fā)表于 03-19 09:04 ?1876次閱讀

    三星Galaxy S24 Ultra相機(jī)性能顯著提升:2億像素、更大傳感器、更快

    三星表示,新款Galaxy S24系列手機(jī)已將相機(jī)的快門延遲全面降低,其中Galaxy S24 Ultra所搭載的2億像素的主攝像頭更為突出,這項提升使相機(jī)能更快捕捉瞬間。
    的頭像 發(fā)表于 03-08 13:54 ?1166次閱讀