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