十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
要說性能,那是Rust更好。更多的編譯期優(yōu)化、無 GC 等特點加持,開發(fā)高性能應(yīng)用自然是 Rust 性能高。據(jù)統(tǒng)計利用 Rust 開發(fā)的 RipGrep 性能甚至賽過使用 C 開發(fā)的 Grep。
創(chuàng)新互聯(lián)公司長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為中山企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都做網(wǎng)站,中山網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
但是性能不是唯一考量,當(dāng)你糾結(jié) Borrow Check,糾結(jié) unsafe,糾結(jié) copy clone,糾結(jié)各種奇怪的類型限制的時候;當(dāng)你 cargo build 怒草電腦風(fēng)扇三分鐘的時候;人家 GoLang 可能早就發(fā)兩個版了。
同時 Rust 的語法花活眾多,遍歷數(shù)組可以寫循環(huán)也可以 for_each() 一行流。不像 GoLang 那么白開水誰寫都差不多一個味道,經(jīng)常第一天想到神來之筆快樂 Coding 到半夜第二天爬起來發(fā)現(xiàn)昨晚寫的都甚么東西看不懂不如蜘蛛爬,這是墜痛苦的!
Go 的編譯器為了個編譯速度快連循環(huán)不變式提升、循環(huán)展開、對齊等等優(yōu)化一個都不做,函數(shù)內(nèi)斂一堆限制大多數(shù)情況都不做(比如函數(shù)里有個 for 或者 defer 或者 select 等,或者函數(shù)多于 40 個表達(dá)式),擁有的優(yōu)化一只手都能數(shù)的過來:
基礎(chǔ)優(yōu)化欠缺,高級優(yōu)化更是一個沒有,和在 Debug 配置編譯下的 -O0 優(yōu)化的 C++ 差不多一個概念(而且跑得更慢),哪來的資本和 rust 比性能。
其他方面:
而且 Go 的 GC 吞吐量也很低,大多數(shù)情況下各方面 Go 跑的甚至都比 Java 更慢。只不過得益于 AOT 編譯的設(shè)計,相比 Java 而言除了內(nèi)存占用小和啟動速度快之外就沒有任何優(yōu)勢了,比較適合拿來做性能不關(guān)鍵的命令行工具。
個人還是更喜歡 Rust。
我嘗試來回答你幾個問題: 1、Go有什么優(yōu)勢 可直接編譯成機(jī)器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了。 靜態(tài)類型語言,但是有動態(tài)語言的感覺,靜態(tài)類型的語言就是可以在編譯的時候檢查出來隱藏的大多數(shù)問題,...
1.根據(jù)Rust的特點和定位適用于對控制性比較強(qiáng),對性能很敏感的領(lǐng)域,比如底層軟件(OS/driver),基礎(chǔ)系統(tǒng)軟件(Compiler/VM/DB等),性能要求比較高的應(yīng)用軟件(瀏覽器/圖形圖像處理/游戲/高性能服務(wù)器軟件等,或者可能包括近來很火的ML應(yīng)用方向)。2.底層軟件(比如OS/driver)部分是和C應(yīng)用領(lǐng)域有很大重合度的,在這個領(lǐng)域我認(rèn)為對C沖擊不大。在這里C已經(jīng)足夠好了,而且這些領(lǐng)域技術(shù)性很高,但業(yè)務(wù)邏輯其實并不算太復(fù)雜,Rust的優(yōu)勢作用有限。而且Rust相比于C語言,帶來了一定的“黑盒”和這些領(lǐng)域一些不需要的語言復(fù)雜特性。C作為“可移植的匯編”恰到好處的非常適合這個領(lǐng)域,其他語言基本無法構(gòu)成挑戰(zhàn)。3.前面1中提到的領(lǐng)域除了底層軟件(OS/driver之類)剩下的領(lǐng)域,C++目前最具有優(yōu)勢。在這些領(lǐng)域C++相對于C提供了高級特性方便開發(fā),相對于JVM系的性能更高內(nèi)存更少。(雖然這些領(lǐng)域有些知名軟件是C和JVM系的,比如postgresql/redis/nginx/Hadoop/spark等,但在這些領(lǐng)域目前只有C++一個是全能型)我認(rèn)為rust的主要戰(zhàn)場就在這里,需要對決的對手就是C++。C++既有的力量(系統(tǒng)/代碼/人員/習(xí)慣)太強(qiáng)大了,在這些領(lǐng)域完全打敗C++是非常困難的。而且C++也在不斷發(fā)展,近年來發(fā)展的步伐也快了起來,C++11/14/17等等。但C++的歷史包袱是很重的,越發(fā)展其實復(fù)雜性也在不斷提高,何況有些問題(像安全/異常/復(fù)雜繼承等等)是基因里的,通過增加feature打補(bǔ)丁是彌補(bǔ)不了的。Rust最容易吸引的人群可能是C++程序員:因為,一方面解決了不少C++的痛點,另一方面Rust的很多特性其實有點復(fù)雜也有點門檻的。這些特性背后的動因有C++背景的程序員是非常容易理解,也是不少C++程序員夢寐以求的。相對而言,其他語言背景出身的程序員,對Rust的共鳴性遠(yuǎn)遠(yuǎn)沒有C++程序員強(qiáng)烈。猜測Rust會:a.蠶食掉一定的C++份額。一些可能本會選擇C++開發(fā)的新項目,可能會選擇Rust。b.蠶食掉一定的Java份額。有些項目選擇JVM系是由于C++開發(fā)太復(fù)雜,同時該項目對性能又有一定的要求。那么Rust出現(xiàn)以后也會蠶食掉一定的此類項目。c.蠶食掉一定的golang份額。不滿意gc(即使1.5改善了,gc的先天問題是無法徹底解決的),不滿意泛型,不滿意性能的一部分項目。不過也要依賴于Rust未來并發(fā)的解決方案是否足夠理想了。1.0這種是沒戲的。d.移動端Rust從自己實力上說是夠的。不過這個真的要看出品移動端設(shè)備的“爹”的意思了。Rust自身有一些優(yōu)勢非常明顯,在這些領(lǐng)域是很有競爭力的。Rust社區(qū)一定要重視IDE開發(fā)環(huán)境,花費精力出eclipse/intellji/vs的高質(zhì)量的IDE插件,對于推廣和流行大有幫助。只要Rust社區(qū)不要犯D語言曾經(jīng)反復(fù)折騰的毛病,能像golang社區(qū)那樣基礎(chǔ)做的不錯并且工程質(zhì)量優(yōu)秀,那么未來Rust出幾個殺手級的應(yīng)用,前途還是很可期的。