日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Go1.0 到 1.22 的性能表現,提高了多少倍?

來源: 責編: 時間:2024-05-16 09:10:43 243觀看
導讀大家好,我是煎魚。五一假期時看到 @Ben Hoyt 大佬分享的文章《Go performance from version 1.0 to 1.22》,分享了他在這么多年來一直堅持不懈的對 Go 進行性能測試的記載。今天基于此分享給大家,有所調整和精簡。原作者

大家好,我是煎魚。E6c28資訊網——每日最新資訊28at.com

五一假期時看到 @Ben Hoyt 大佬分享的文章《Go performance from version 1.0 to 1.22》,分享了他在這么多年來一直堅持不懈的對 Go 進行性能測試的記載。E6c28資訊網——每日最新資訊28at.com

今天基于此分享給大家,有所調整和精簡。E6c28資訊網——每日最新資訊28at.com


原作者對 Go1.0 到 Go1.22 的所有 Go 版本進行了性能測試,包含了在 Go 1.20 中新增的性能分析引導優化(PGO)的結果。E6c28資訊網——每日最新資訊28at.com

Go 測試項目用的是 GoAWK[1] 項目,該項目用 Go 寫的 AWK 解釋器,支持 CSV。E6c28資訊網——每日最新資訊28at.com

GoAWK 使用案例如下:E6c28資訊網——每日最新資訊28at.com

$ go install github.com/benhoyt/goawk@latest$ goawk 'BEGIN { print "foo", 42 }'foo 42$ echo 1 2 3 | goawk '{ print $1 + $3 }'4# Or use GoAWK's CSV and @"named-field" support:$ echo -e 'name,amount/nBob,17.50/nJill,20/n"Boba Fett",100.00' | /  goawk -i csv -H '{ total += @"amount" } END { print total }'137.5

性能測試

接下來正式開始進行性能測試,主要是同項目多版本測試的模式。E6c28資訊網——每日最新資訊28at.com

原作者(下稱:我)通過在兩個 AWK 程序上運行 GoAWK 來測試這一點,這兩個程序代表了使用 AWK 可以做的極端不同情況:I/O 操作與字符串處理,以及數值計算。E6c28資訊網——每日最新資訊28at.com

countwords(字符串處理任務)

首先是 countwords,這是一個字符串處理任務,它計算輸入中單詞的頻率并打印出帶有計數的單詞。這是 AWK 腳本的典型應用。E6c28資訊網——每日最新資訊28at.com

程序輸入是某本書的 10 倍串聯版本的內容。E6c28資訊網——每日最新資訊28at.com

以下是部分代碼:E6c28資訊網——每日最新資訊28at.com

{    for (i=1; i<=NF; i++)        counts[tolower($i)]++}END {    for (k in counts)        print k, counts[k]}

sumloop(循環統計任務)

第二個程序是 sumloop,這是一個緊湊的循環,它多次將循環計數器加到一個變量上。E6c28資訊網——每日最新資訊28at.com

這個程序并不是 AWK 的典型用法,但它是測試 GoAWK 字節碼解釋器循環的好方法。E6c28資訊網——每日最新資訊28at.com

以下是部分代碼:E6c28資訊網——每日最新資訊28at.com

BEGIN {    for (i=0; i<10000000; i++)        sum += i+i+i+i+i}

注:我不得不對 GoAWK 的代碼做了一些微調,以便它能在舊版本的 Go 上編譯。特別是對于 Go 1.0,因為它沒有 bufio.Scanner,而 GoAWK 在很大程度上依賴它。我為 1.0 使用了 Go 1.1 的 bufio.Scanner 實現。E6c28資訊網——每日最新資訊28at.com

性能測試圖表

圖表中的計時數字是我在 x86-64 Linux 筆記本電腦上運行三次中的最佳時間(以秒為單位)。藍線代表 countwords 程序,紅線代表 sumloop 程序。E6c28資訊網——每日最新資訊28at.com

Go 各版本的性能測試結果的圖表如下:E6c28資訊網——每日最新資訊28at.com

圖片E6c28資訊網——每日最新資訊28at.com

請注意,這次 Y 軸是對數的,目的是為了更清晰地看到最近版本中更微妙的改進。E6c28資訊網——每日最新資訊28at.com

圖表中還包括了每個 Go 版本下的 GoAWK 二進制文件大小 —— 那是淺灰色線。E6c28資訊網——每日最新資訊28at.com

一些要點

1、Go 最大的改進出現在 1.3、1.5、1.7 和 1.12 版本中。在此之后的版本,性能提升變得非常漸進 —— 這意味著所有容易實現的優化早已完成。E6c28資訊網——每日最新資訊28at.com

2、Go 1.2 性能變差了,countwords 出現了一個奇怪的峰值:它從 1.1 的 7.5 秒增加到 1.2 的 25.5 秒(!),然后下降到 1.3 的 2.8 秒。E6c28資訊網——每日最新資訊28at.com

我通過分析并注意到 Go 運行時棧操作占據了運行時間的很大一部分,找出了 1.2 異常的原因。E6c28資訊網——每日最新資訊28at.com

以下是 pprof 輸出的前幾行:E6c28資訊網——每日最新資訊28at.com

$ go tool pprof --text ./goawk_1.2 go12.profTotal: 1830 samples     332  18.1%  18.1%      332  18.1% runtime.newstack     296  16.2%  34.3%      296  16.2% runtime.memclr     281  15.4%  49.7%      281  15.4% runtime.oldstack     222  12.1%  61.8%      619  33.8% github.com/benhoyt/goawk/interp.(*interp).execute      91   5.0%  66.8%       91   5.0% runtime.lessstack      75   4.1%  70.9%      133   7.3% github.com/benhoyt/goawk/interp.(*interp).callBuiltin      57   3.1%  74.0%       57   3.1% runtime.stackfree      53   2.9%  76.9%       81   4.4% strings.FieldsFunc      ...

這幾乎可以肯定是由于在 1.3 中修復的堆棧 “熱分裂” 問題[2]所導致的性能下降,因為在該版本 Go 團隊將 goroutine 棧的實現從舊的分段模型改為連續模型。E6c28資訊網——每日最新資訊28at.com

3、PGO 僅將性能提高了幾個百分點,使用 Go 1.22,countwords 大約提高了 2%,sumloop 提高了 7%。我使用 PGO 編譯了發布的 GoAWK 二進制文件。E6c28資訊網——每日最新資訊28at.com

4、二進制文件的大小多年來一直保持相對穩定,除了 1.2 版本中的大幅增加。即使啟用了 PGO,二進制文件的大小也只有大約 5% 的增加,所以我認為通常這是值得的。E6c28資訊網——每日最新資訊28at.com

結論

從測試結果來看,countwords 現在的運行速度比使用 Go 1.0 時快了大約 8 倍,而 sumloop 快了 24 倍。E6c28資訊網——每日最新資訊28at.com

Go 所編寫的程序變快的原因有許多,包含但不限于 Go 團隊和外部貢獻者改進了編譯器,并優化了運行時、垃圾回收器和標準庫等。E6c28資訊網——每日最新資訊28at.com

煎魚注:不得不說,感謝 Go 核心團隊多年來的辛勤工作!讓我們躺著升級個版本,就能實現性能的提高。E6c28資訊網——每日最新資訊28at.com

參考資料

[1]GoAWK: https://github.com/benhoyt/goawkE6c28資訊網——每日最新資訊28at.com

[2]堆棧 “熱分裂” 問題: https://docs.google.com/document/u/0/d/1wAaf1rYoM4S4gtnPh0zOlGzWtrZFQ5suE8qr2sD8uWQ/mobilebasic?_immersive_translate_auto_translate=1E6c28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88398-0.htmlGo1.0 到 1.22 的性能表現,提高了多少倍?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: React 全新編譯器太好用了!

下一篇: 有哪些 Java 面試題 90% 的公司會問到?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
日韩视频在线观看一区二区| 国产精品视频1区| 久久久精品2019中文字幕神马| 午夜日本精品| 久久精品视频在线看| 另类天堂av| 欧美高清成人| 国产精品久久久久久久久久直播 | 欧美视频一区二区三区在线观看| 欧美日韩国产影片| 国产精品腿扒开做爽爽爽挤奶网站| 国产一区二区三区的电影 | 国内精品**久久毛片app| 亚洲国产精品悠悠久久琪琪| 夜夜嗨av一区二区三区免费区 | 欧美日韩在线看| 国产亚洲人成a一在线v站| 在线播放亚洲| 在线亚洲一区二区| 欧美一区亚洲一区| 欧美人与禽猛交乱配| 国产日韩欧美三区| 亚洲理伦在线| 久久精品1区| 欧美日韩一区二区三区免费看| 国产在线不卡精品| 一区二区三区日韩在线观看| 久久久亚洲影院你懂的| 欧美吻胸吃奶大尺度电影| 国精产品99永久一区一区| 99国产精品国产精品久久| 久久成人久久爱| 欧美日一区二区三区在线观看国产免| 国产在线观看一区| 亚洲视频免费看| 久久综合影视| 国产精品永久免费在线| 亚洲另类春色国产| 久久久久久久一区二区| 国产精品www网站| 亚洲国产欧美日韩精品| 欧美一区二区三区视频免费| 欧美日韩另类视频| 亚洲电影免费观看高清完整版| 午夜精品www| 欧美少妇一区二区| 亚洲三级免费电影| 久久久噜噜噜久久| 国产日韩欧美在线一区| 亚洲视频专区在线| 欧美精品一区二区三区蜜桃 | 99re视频这里只有精品| 老司机午夜精品视频在线观看| 国产精品美女一区二区在线观看| 亚洲人成欧美中文字幕| 久久在精品线影院精品国产| 国产日韩欧美一区| 亚洲免费在线观看| 欧美日韩免费高清| 999在线观看精品免费不卡网站| 久色成人在线| 一区免费观看视频| 久久久精品久久久久| 国产日韩在线看| 午夜精品一区二区三区电影天堂 | 一本久道久久综合中文字幕 | 国产日韩三区| 午夜精品一区二区三区电影天堂| 欧美三级视频| 一本久道久久综合婷婷鲸鱼| 欧美高清在线观看| 亚洲精品美女在线观看| 欧美第一黄色网| 亚洲国产成人91精品| 久久综合一区| 亚洲国产日韩欧美在线动漫| 久久人人精品| 在线观看成人av电影| 久久综合一区二区| 狠狠色综合播放一区二区| 久久久久www| 激情小说另类小说亚洲欧美| 国产午夜精品理论片a级大结局| 一区二区三区视频观看| 欧美日韩亚洲一区二区三区四区 | 国产日韩在线亚洲字幕中文| 亚洲欧美在线免费观看| 国产精品一区二区三区久久久| 亚洲免费在线视频| 国产欧美婷婷中文| 欧美在线网址| 一区二区三区在线视频免费观看| 久久网站免费| 亚洲激情视频网| 欧美日本精品| 亚洲一区二区动漫| 国产欧美在线观看| 久久久蜜臀国产一区二区| ●精品国产综合乱码久久久久| 暖暖成人免费视频| 日韩视频精品| 国产精品乱码久久久久久| 欧美一区视频| 有码中文亚洲精品| 欧美激情亚洲一区| 国产精品99久久久久久久vr| 国产精品一区二区视频| 久久久久久69| 亚洲精品美女在线观看| 国产精品va| 久久精品91久久久久久再现| 在线观看日韩一区| 欧美精品一区二| 亚洲免费一级电影| 一区久久精品| 欧美三级不卡| 欧美中文字幕第一页| 在线欧美影院| 欧美日韩在线观看视频| 欧美在线视频免费播放| 亚洲精品久久视频| 国产精品入口66mio| 久久久精品欧美丰满| 亚洲美女毛片| 国产农村妇女毛片精品久久莱园子 | 国产日韩欧美日韩| 欧美成人精品激情在线观看| 中文av一区特黄| 狠狠色丁香婷综合久久| 欧美日韩喷水| 久久精品国产77777蜜臀| 亚洲国产精品嫩草影院| 国产精品久久7| 老色鬼久久亚洲一区二区| 中日韩美女免费视频网址在线观看| 国产色综合久久| 欧美激情aⅴ一区二区三区| 午夜精品区一区二区三| 亚洲娇小video精品| 国产精品自拍一区| 欧美激情日韩| 久久精品国产久精国产一老狼| 亚洲免费电影在线| 国产在线欧美日韩| 欧美日韩国产一区二区| 久久久成人精品| 99国产精品99久久久久久| 激情成人在线视频| 国产精品毛片| 欧美美女福利视频| 久久午夜精品| 午夜精品一区二区三区在线播放| 亚洲精品一区二区三区av| 国产专区欧美精品| 国产精品久久久免费| 欧美韩国一区| 久久视频在线看| 午夜精品久久久久久久99樱桃| 91久久久久久| 国产一区二区在线观看免费播放| 欧美日韩精品一区视频 | 欧美精品在线视频观看| 久久久精品五月天| 亚洲免费影视第一页| 亚洲免费av网站| 亚洲二区精品| 国产一区二区日韩精品欧美精品| 欧美日韩国产综合网| 美女视频黄 久久| 久久大香伊蕉在人线观看热2| 这里只有精品视频| 亚洲区免费影片| 在线日本成人| 狠狠色丁香婷婷综合影院| 国产日韩欧美制服另类| 国产精品久久久久一区二区| 欧美日本免费一区二区三区| 欧美成年人视频网站| 一区免费在线| 国产欧美一区二区三区在线老狼 | 亚洲一区二区三区视频播放| 亚洲精选久久| 亚洲国产一区二区三区高清| 黄色精品一区| 国产在线欧美| 国产偷国产偷亚洲高清97cao| 国产精品美女在线观看| 欧美三级中文字幕在线观看| 欧美区在线播放| 欧美日本亚洲韩国国产| 欧美激情一区二区三区四区| 女生裸体视频一区二区三区| 久久天天躁夜夜躁狠狠躁2022 | 亚洲一区二区精品视频| 一本色道久久加勒比88综合| 亚洲久久成人| 99精品免费视频| 一区二区成人精品 | 久久天堂精品| 久久综合99re88久久爱| 开元免费观看欧美电视剧网站| 久久亚洲欧美| 蜜臀a∨国产成人精品| 欧美不卡视频|