欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

rust語言還沒go快 rust語言 沒前景

rust/warp 比 go/fasthttp 要快數(shù)倍

上周我發(fā)現(xiàn)了關(guān)于超性能的帖子。它表示 rust tokio/hyper 性能高于 go http。這是意料之中的,但有一條評(píng)論與 fasthttp 相比,其中 rust 的表現(xiàn)稍差。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、墨脫ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的墨脫網(wǎng)站制作公司

我決定自己執(zhí)行基準(zhǔn)測試。使用以下命令在 AWS r5n.8xlarge實(shí)例上執(zhí)行所有基準(zhǔn)測試:

go/fasthttp 代碼:

生銹/扭曲代碼:

請(qǐng)注意,需要額外的標(biāo)頭來匹配 fasthttp 實(shí)現(xiàn)。

初始基準(zhǔn)測試結(jié)果

去/快速http:

生銹/翹曲:

fasthttp 比 rust 版本高出 10% 左右!

優(yōu)化 rust 版本

很少有已知的技巧可以使 rust 版本更好地工作。讓我們一步一步地應(yīng)用它們,看看我們能走多遠(yuǎn)。

啟用 LTO

LTO 是一種鏈接時(shí)優(yōu)化,可減少生成的二進(jìn)制大小并提高性能。了解有關(guān) LTO 的更多信息。

與初始版本相比,我們獲得了 +5% 的收益。

使用 Jemalloc

默認(rèn)情況下,rust 代碼使用 libc 內(nèi)存分配器,通常不建議將其用于高負(fù)載的關(guān)鍵應(yīng)用程序。有很多替代分配器。根據(jù)我的經(jīng)驗(yàn),jemalloc 在性能和內(nèi)存利用率方面是最好的。了解有關(guān)使用 jemalloc 的更多信息。

與 LTO 版本相比,我們得到了 +1.8%。

啟用不穩(wěn)定的管道

帶有wrk 的Benchmark是一個(gè)非常簡單的 HTTP/1 小明文測試。這種基準(zhǔn)有一些細(xì)節(jié)。讓我們unstable_pipeline在 warp 實(shí)例上啟用。

與 LTO+jemalloc 版本相比,我們獲得了額外的 +3.8%。

太好了,在這一步我們已經(jīng)超越了 fasthttp!

修復(fù)一些 tokio

讓我們檢查一下火焰圖,看看運(yùn)行代碼是否有明顯的無效性。我不會(huì)發(fā)布它,以免敘述過多。

引起我注意的特殊功能是wake0 (見這里)。

該wakers數(shù)組是在每個(gè)函數(shù)調(diào)用上創(chuàng)建的,用于收集所有需要通知并實(shí)際通知它們的喚醒者。我開始使用這段代碼,并意識(shí)到減少會(huì)NUM_WAKERS提高性能!讓我們?cè)谶@里注意,它是一個(gè)數(shù)組(不是 vec),它是在堆棧上分配的,所以不會(huì)發(fā)生分配。性能不足的原因是rust在初始化數(shù)組時(shí),會(huì)將None值復(fù)制到數(shù)組的每個(gè)槽中。NUM_WAKERS當(dāng)增加時(shí),這會(huì)導(dǎo)致減速。

我們獲得了額外的 +2.8%,并且以 3.7% 的成績超過了 go/fasthttp!

什么做得不好

我嘗試了更多技巧,但沒有顯示出有意義的影響:

Rust 和 Go,哪個(gè)性能更好?

要說性能,那是Rust更好。更多的編譯期優(yōu)化、無 GC 等特點(diǎn)加持,開發(fā)高性能應(yīng)用自然是 Rust 性能高。據(jù)統(tǒng)計(jì)利用 Rust 開發(fā)的 RipGrep 性能甚至賽過使用 C 開發(fā)的 Grep。

但是性能不是唯一考量,當(dāng)你糾結(jié) Borrow Check,糾結(jié) unsafe,糾結(jié) copy clone,糾結(jié)各種奇怪的類型限制的時(shí)候;當(dāng)你 cargo build 怒草電腦風(fēng)扇三分鐘的時(shí)候;人家 GoLang 可能早就發(fā)兩個(gè)版了。

同時(shí) Rust 的語法花活眾多,遍歷數(shù)組可以寫循環(huán)也可以 for_each() 一行流。不像 GoLang 那么白開水誰寫都差不多一個(gè)味道,經(jīng)常第一天想到神來之筆快樂 Coding 到半夜第二天爬起來發(fā)現(xiàn)昨晚寫的都甚么東西看不懂不如蜘蛛爬,這是墜痛苦的!

Go 的編譯器為了個(gè)編譯速度快連循環(huán)不變式提升、循環(huán)展開、對(duì)齊等等優(yōu)化一個(gè)都不做,函數(shù)內(nèi)斂一堆限制大多數(shù)情況都不做(比如函數(shù)里有個(gè) for 或者 defer 或者 select 等,或者函數(shù)多于 40 個(gè)表達(dá)式),擁有的優(yōu)化一只手都能數(shù)的過來:

基礎(chǔ)優(yōu)化欠缺,高級(jí)優(yōu)化更是一個(gè)沒有,和在 Debug 配置編譯下的 -O0 優(yōu)化的 C++ 差不多一個(gè)概念(而且跑得更慢),哪來的資本和 rust 比性能。

其他方面:

而且 Go 的 GC 吞吐量也很低,大多數(shù)情況下各方面 Go 跑的甚至都比 Java 更慢。只不過得益于 AOT 編譯的設(shè)計(jì),相比 Java 而言除了內(nèi)存占用小和啟動(dòng)速度快之外就沒有任何優(yōu)勢了,比較適合拿來做性能不關(guān)鍵的命令行工具。

個(gè)人還是更喜歡 Rust。

對(duì)比 Go 語言,Rust 有什么優(yōu)勢和劣勢?

我并沒有什么編程的經(jīng)驗(yàn),覺得編程實(shí)在是太復(fù)雜了,不喜歡去研究太多,對(duì)這個(gè)也不怎么懂,只能說自己是個(gè)半吊子,就是所掌握的知識(shí),也是東拼西湊的,朋友和我說點(diǎn)兒,自己去書上看一點(diǎn)兒,只能說根據(jù)自己的體驗(yàn)給出一些體會(huì)吧。

Rust的優(yōu)勢是:

1、Rust把安全、精確的內(nèi)存管理作為一切的中心放在首要的位置。

2、Rust同時(shí)擁有特別強(qiáng)的控制性和特別強(qiáng)的安全性。

3、Rust語言通過: 優(yōu)秀的類型系統(tǒng)設(shè)計(jì)、 嚴(yán)格的編譯器靜態(tài)審查、 配合程序員局部核對(duì)、加上少量的運(yùn)行時(shí)校驗(yàn),保障了內(nèi)存安全。

4、Rust的語言特別的復(fù)雜,導(dǎo)致學(xué)習(xí)曲線比較陡峭,對(duì)于初學(xué)者來說難度較大。但學(xué)通之后將終生受益。

5、效率高,速度特別的快

6、 支持范型

7、 社區(qū)活躍度很高,更加的強(qiáng)調(diào)了社區(qū)的作用。

8、Rust 有更強(qiáng)的語義,更容易捕獲錯(cuò)誤的邏輯,編譯器直接檢查出你代碼中的不安全的部分

Rust的劣勢是:

1、 語言相對(duì)來說比較復(fù)雜,對(duì)于新手來說,讓新手摸不著頭腦。

2、還不算太穩(wěn)定。

其實(shí)我覺得什么代碼啊編程啊這些東西還是比較適合理工的學(xué)生去研究,我一看腦袋就大,完全不明白在講什么。我大概了解的就是這些,語言的話大家可以多方面的去了解,也不是說有缺點(diǎn)就是不好,看配置看個(gè)人吧,每個(gè)人習(xí)慣不一樣,也許有的人用不穩(wěn)定的還覺得挺好呢,有的人就喜歡比較完美的,在我看來編程這個(gè)東西真的是很復(fù)雜,會(huì)有很多的代碼,這些代碼弄得我自己頭都大了,有的時(shí)候還得去惡補(bǔ)一下。

網(wǎng)頁名稱:rust語言還沒go快 rust語言 沒前景
瀏覽地址:http://chinadenli.net/article44/ddgdjhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站改版、用戶體驗(yàn)、搜索引擎優(yōu)化、微信小程序、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化