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

當(dāng)前位置:首頁 > 科技  > 軟件

C++ vs Rust vs Go 性能比較

來源: 責(zé)編: 時間:2024-06-24 09:12:16 211觀看
導(dǎo)讀本文將通過一些基準測試,比較 C++ 和 Rust 以及 Go 編寫的相同程序的性能。我們將盡最大努力將語言差異以外的噪音因素隔離開來,不過,與任何基準測試一樣,需要慎重對待測試結(jié)果,因為沒有任何一種基準測試能真正比較兩種不

本文將通過一些基準測試,比較 C++ 和 Rust 以及 Go 編寫的相同程序的性能。我們將盡最大努力將語言差異以外的噪音因素隔離開來,不過,與任何基準測試一樣,需要慎重對待測試結(jié)果,因為沒有任何一種基準測試能真正比較兩種不同語言的性能。7aR28資訊網(wǎng)——每日最新資訊28at.com

7aR28資訊網(wǎng)——每日最新資訊28at.com

計劃

本文要比較的程序是 gunzip,它可以解壓 .gz 文件。gunzip 有不同的實現(xiàn),例如用 C 編寫的 GNU gzip[2]、用 C 編寫的 zlib[3]、用 C 編寫的 miniz[4]、用 Rust 編寫的 flate2-rs[5] 和用 Go 編寫的 gzip[6]。7aR28資訊網(wǎng)——每日最新資訊28at.com

但是,除非一種語言是另一種語言的直接移植,由于可能會引入不同實現(xiàn)的噪音,因此無法對兩種語言進行準確的基準測試。7aR28資訊網(wǎng)——每日最新資訊28at.com

7aR28資訊網(wǎng)——每日最新資訊28at.com

為此,我們將選擇以下三個方面:7aR28資訊網(wǎng)——每日最新資訊28at.com

  • 用 Rust 寫的 gunzip[7]
  • C++ 編寫的移植版cpp_gunzip[8]
  • Go 編寫的移植版go_gunzip[9]

盡量減少噪音

還有一個問題--外部庫。它們都依賴第三方庫計算 CRC32 校驗和,這在解壓縮過程中會耗費大量時間。其中,gunzip 依賴 crc32fast[10],cpp_gunzip 可以鏈接 zlib 或 FastCrc32[11],而 go_gunzip 則依賴 Go 標準庫里的 crc32[12]。幸運的是,所有這些程序都支持多線程選項,可以在單獨的線程上運行 CRC32 校驗和,因此運行時間與解壓縮實現(xiàn)成正比--這是因為解壓縮比 CRC32 校驗和耗時更長,因此通過并行化,可以有效的將 CRC32 校驗和的影響降至最低。7aR28資訊網(wǎng)——每日最新資訊28at.com

讓我們做一些實驗來驗證。我們用兩種不同的方式編譯 cpp_gunzip:(1) 使用 FastCrc32;(2) 使用 zlib 計算 CRC32 校驗和。然后使用單線程和雙線程模式比較兩者的運行時間,看看有什么不同。7aR28資訊網(wǎng)——每日最新資訊28at.com

# terminal in Linuxgit clone https://github.com/TechHara/cpp_gunzip.gitcd cpp_gunzip# compile with FastCrc32 vs zlib for CRC32 checksumcmake -B fastcrc32 -DCMAKE_CXX_FLAGS=-O3 -DUSE_FAST_CRC32=ON . && make -j -C fastcrc32cmake -B zlib -DCMAKE_CXX_FLAGS=-O3 -DUSE_FAST_CRC32=OFF . && make -j -C zlib# download linux source code and compress as .gz filecurl -o- https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.7.tar.xz | xz -d | gzip > linux.tgz# run with single-threadtime fastcrc32/gunzip < linux.tgz > linux.tartime zlib/gunzip < linux.tgz > linux.tar# run with multi-thread (-t option)time fastcrc32/gunzip -t < linux.tgz > linux.tartime zlib/gunzip -t < linux.tgz > linux.tar

7aR28資訊網(wǎng)——每日最新資訊28at.com

在 x64 Ubuntu 系統(tǒng)上,單線程模式下兩個 CRC32 校驗和庫的性能差別很大。不過,當(dāng)我們在多線程模式下運行時,這兩個庫的運行時間并沒有出現(xiàn)預(yù)期的差異。因此,這讓我們可以最大限度減少基準測試時使用不同 CRC32 庫所帶來的噪音。7aR28資訊網(wǎng)——每日最新資訊28at.com

基準測試

接下來我們將運行基準,使用完全相同的 .gz 解壓縮實現(xiàn),比較 C++ 與 Rust 和 Go 的性能。我們已經(jīng)運行了 C++ 版本,現(xiàn)在來運行 Rust 和 Go 版本。確保在多線程模式下運行,以盡量減少 CRC32 校驗和產(chǎn)生的噪音。7aR28資訊網(wǎng)——每日最新資訊28at.com

# clone the Rust versiongit clone https://github.com/TechHara/gunzip.gitcd gunzip# buildcargo build -r# run in multi-threaded mode (-t)time target/release/gunzip -t < ../linux.tgz > linux.tar# clone the Go versioncd ..git clone https://github.com/TechHara/go_gunzip.gitcd go_gunzip# buildgo build# set max process to 2export GOMAXPROCS=2# run in multi-threaded mode (-t)time ./gunzip -t < ../linux.tgz > linux.tar

7aR28資訊網(wǎng)——每日最新資訊28at.com

好吧,在 x64 Ubuntu 系統(tǒng)上,C++ 和 Rust 的運行速度幾乎相同,而 Go 的運行時間是它們的 2 倍左右。但與benchmarkgame的數(shù)據(jù)(4倍)相比,在這個場景下的Go性能還更好一點。7aR28資訊網(wǎng)——每日最新資訊28at.com

7aR28資訊網(wǎng)——每日最新資訊28at.com

https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html7aR28資訊網(wǎng)——每日最新資訊28at.com

但更好的性能并不意味著更好的語言。在選擇語言時,必須考慮應(yīng)用、開發(fā)/維護時間以及安全性。最典型的例子就是 Python,它比 C 語言慢 100 倍,但卻是最流行的編程語言。7aR28資訊網(wǎng)——每日最新資訊28at.com

參考資料:7aR28資訊網(wǎng)——每日最新資訊28at.com

  • [1]Performance — C++ vs Rust vs Go: https://medium.com/@techhara/performance-c-vs-rust-vs-go-a44cbd2cc882
  • [2]GUN gzip: https://www.gnu.org/software/gzip
  • [3]zlib: https://www.zlib.net
  • [4]miniz: https://github.com/richgel999/miniz
  • [5]flate2-rx: https://github.com/rust-lang/flate2-rs
  • [6]gzip in Go: https://pkg.go.dev/compress/gzip
  • [7]gunzip in Rust: https://github.com/techhara/gunzip
  • [8]cpp_gunzip: https://github.com/TechHara/cpp_gunzip
  • [9]go_gunzip: https://github.com/TechHara/go_gunzip
  • [10]crc32fast: https://docs.rs/crc32fast/latest/crc32fast/
  • [11]FastCrc32: https://create.stephan-brumme.com/crc32
  • [12]crc32: https://pkg.go.dev/hash/crc32

本文鏈接:http://m.www897cc.com/showinfo-26-95918-0.htmlC++ vs Rust vs Go 性能比較

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

上一篇: C++多線程中的互斥鎖

下一篇: 程序的“通用性”和“過度設(shè)計”困境

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
樱花yy私人影院亚洲| 国产精品久久综合| 久久综合导航| 欧美成人免费观看| 国产精品久久久久久久7电影| 国产欧美欧洲在线观看| 一区在线观看| 99精品欧美一区二区三区综合在线| 一卡二卡3卡四卡高清精品视频| 亚洲尤物在线| 久久最新视频| 国产精品久久久久9999吃药| 国产一二精品视频| 亚洲精品免费电影| 性色av香蕉一区二区| 猛干欧美女孩| 国产精品视频九色porn| 一区二区亚洲精品国产| 日韩一区二区福利| 欧美在线视频免费播放| 欧美国产第二页| 国产日韩欧美91| 亚洲精品一级| 久久国产福利国产秒拍| 欧美另类变人与禽xxxxx| 国产欧美精品在线观看| 亚洲激情校园春色| 欧美亚洲一区二区在线| 欧美精品免费播放| 国产一区二区三区四区hd| 亚洲精品在线视频观看| 久久国产乱子精品免费女 | 日韩视频免费看| 欧美一区二区福利在线| 欧美jjzz| 国产欧美日韩综合一区在线播放 | 久久久九九九九| 欧美三级乱码| 亚洲韩国精品一区| 欧美综合二区| 国产精品wwwwww| 91久久精品国产91性色tv| 欧美综合国产| 欧美视频在线观看一区| 亚洲国产合集| 久久久国产精品一区| 国产精品国产三级国产普通话三级 | 国产一区二三区| 亚洲无玛一区| 欧美精品v国产精品v日韩精品 | 亚洲欧美综合| 欧美日韩国产区| 136国产福利精品导航网址| 亚洲欧美一区二区精品久久久| 欧美激情亚洲| 亚洲国产天堂久久综合网| 欧美影院在线| 国产精品午夜av在线| 久久综合九色综合久99| 国产午夜精品美女毛片视频| 亚洲天堂男人| 欧美日韩午夜精品| 亚洲精品日韩激情在线电影| 久久综合中文字幕| 一区二区三区在线不卡| 久久久精品国产免大香伊| 国产欧美精品一区| 亚洲欧美综合国产精品一区| 国产精品va在线播放我和闺蜜| 亚洲美女色禁图| 欧美激情一区三区| 亚洲三级视频| 欧美精品成人91久久久久久久| 1769国内精品视频在线播放| 久久性天堂网| 在线观看一区视频| 免费看成人av| 亚洲国产欧美在线人成| 免费一级欧美片在线播放| 亚洲第一精品夜夜躁人人爽| 久久露脸国产精品| 在线不卡免费欧美| 欧美chengren| 亚洲日本中文字幕| 欧美精品一区在线| 一区二区精品在线观看| 欧美日韩一区在线观看视频| 一区二区三区www| 国产精品v欧美精品v日韩精品| 亚洲网站在线观看| 国产伦精品一区二区三区在线观看| 午夜久久一区| 狠狠久久综合婷婷不卡| 女人色偷偷aa久久天堂| 亚洲精品在线看| 欧美天天综合网| 亚洲免费一级电影| 国产日韩一区二区| 久久亚洲国产精品一区二区| 亚洲国产精品女人久久久| 欧美夫妇交换俱乐部在线观看| 亚洲三级毛片| 国产精品黄色| 久久精品国产综合| 亚洲高清久久| 欧美日韩精品三区| 亚洲欧美日韩视频二区| 国产亚洲精品激情久久| 久久亚洲精品一区| 日韩网站免费观看| 国产精品区免费视频| 久久久久久久久久久久久女国产乱 | 日韩视频在线免费| 国产精品久久久久久久久久久久久久 | 亚洲女性裸体视频| 国内精品视频一区| 欧美大色视频| 亚洲一区影音先锋| 韩国在线一区| 欧美精品一区二区三区四区| 亚洲一区二区免费视频| 狠狠色狠狠色综合日日91app| 欧美国产精品中文字幕| 亚洲一区二区三区国产| 好吊妞**欧美| 欧美日本国产在线| 欧美在线亚洲综合一区| 亚洲免费激情| 国产三区精品| 欧美日韩国产大片| 久久精品91久久久久久再现| 亚洲精品影院| 国产亚洲精品aa午夜观看| 欧美成人资源网| 欧美亚洲日本网站| 日韩亚洲一区二区| 国模精品娜娜一二三区| 欧美日本久久| 久久久久亚洲综合| 制服丝袜激情欧洲亚洲| 精品成人一区二区三区四区| 国产精品v亚洲精品v日韩精品 | 亚洲少妇一区| 精品二区视频| 国产精品日韩电影| 欧美激情一区二区| 久久av一区二区| 一区二区动漫| 亚洲第一天堂无码专区| 国产麻豆精品久久一二三| 欧美国产在线视频| 久久精品一区蜜桃臀影院| 一本大道久久a久久精二百| 韩日视频一区| 国产精品丝袜91| 欧美精品一二三| 久久亚洲欧美国产精品乐播| 亚洲男人的天堂在线aⅴ视频| 亚洲国产综合91精品麻豆| 国户精品久久久久久久久久久不卡| 欧美三级不卡| 欧美精品国产精品日韩精品| 久久精品成人欧美大片古装| 亚洲一区二区三区免费在线观看| 在线看日韩av| 国产亚洲一区二区三区在线观看| 欧美日韩一区二区在线视频| 免费成人黄色片| 久久精品人人做人人综合| 亚洲一区精品电影| 99精品久久免费看蜜臀剧情介绍| 尤物yw午夜国产精品视频明星| 国产精品尤物| 国产精品国产一区二区| 欧美日本久久| 欧美精品电影在线| 欧美大胆人体视频| 玖玖综合伊人| 久久久久久亚洲精品杨幂换脸 | 老司机成人网| 久久久久99精品国产片| 香蕉亚洲视频| 亚洲一区在线播放| 一区二区三区.www| 一本到12不卡视频在线dvd| 亚洲黄页视频免费观看| 在线看日韩av| 亚洲电影在线免费观看| 欧美怡红院视频一区二区三区| 亚洲片在线观看| 国产精品视频专区| 午夜亚洲精品| 国产日韩欧美不卡在线| 久久视频国产精品免费视频在线| 国产精品男gay被猛男狂揉视频| 亚洲精品视频在线观看免费| 欧美综合二区| 精品av久久久久电影| 欧美黄色一级视频| 欧美在线不卡视频| 午夜日韩在线观看| 黑人一区二区三区四区五区| 久久精品中文字幕免费mv| 亚洲美女av黄|