前言:突然想打算把Rust作為將來自己主要的副程式語言。當然,主語言還是C#,畢竟.NET平臺這麼強大,寫起來就是爽。緣起:之前打算一些新的產品或者新的要開發的東西,由於沒有歷史包袱,就想重新選型一下,在.NET平臺(C#語言)、Golang、Rust裡面進行選擇一個。後面隨著多方面的對比,最終打算選擇Rust,理由是:臥槽,效能有點6!!!於是,就有了下面這個文章,自己搭建環境時候,以及後續的一些基礎的操作、效能比較,寫成了這個文章,供大家參考戲謔。
廢話不多說,直接開擼。以下均是在Windows環境下進行:
1、先安裝Rust環境。Rust環境下載地址:https://www.rust-lang.org/zh-CN/tools/install
然後根據自己的需要,選擇下載的版本。
2、安裝期間,會提示操作選項,我這邊選擇的是預設 1.安裝完成以後,會有對應的提示。
3、rustc --version可以檢視rust環境的版本。
4、檢視cargo工具版本。rust程式的編譯,離不開cargo。
5、如果需要對原生的rust環境進行升級,可以使用命令 rustip update(圖片標識錯了,大家看命令即可)
6、使用命令 rustup doc可以調出教學檔案,不過都是英文的,英文好的大佬,用它來學習也是很不錯的選擇。
7、可以通過 cargo new 專案名稱 來建立一個新的專案。建立以後,會有一些初始的內容。
8、cargo build會進行編譯,cargo run可以直接執行編譯後的程式。預設建立的是一個hello world,所以可以直接輸出。
9、編譯以後,在target資料夾內,會生成對應的可執行檔案。cargo build預設是debug模式進行編譯。
10、我們也可以通過VS CODE來進行編輯程式碼和編譯,效率高一點。
11、安裝Rust的拓展。目前沒這個拓展了,可以選擇 rust-analyzer,應該是原先Rust的更新版本。也有一百多萬的下載量了,看來玩的人有點多。
12、程式碼debug工具,這個看個人,可以不安裝,沒啥影響。配圖可以不管。它只是提供了一個debug功能。
13、VS CODE上面可以直接執行,執行時候預設會編譯到程式碼檔案同一個目錄下。控制檯也可以看到執行以後的輸出結果。
14、一些基礎語法說明,可以直接看下圖示識和說明。
15、Rust的變數比較神奇,預設的變數都是不可變的,如果需要允許可變,需要新增mut關鍵字來區分。
16、定義一個方法/函數以及其他基礎操作,可見下圖示識說明。
17、Rust的第三方包,都在 https://crates.io 上面。類似於,.NET開發上面,對應的Nuget包網址一樣。不過Cargo目前沒有VS這樣的強大編譯器整合了直接視覺化查詢的東西,所以我們需要自己手動查詢要的包以及版本。
18、例如我要用一個time包來做獲取時間的。我直接選個最新版本,0.3.15
然後在 cargo.toml裡面,在dependencies裡面新增該包的名稱和版本號。新增以後,會自動搜尋有關版本進行下載參照。
19、然後在程式碼內進行引入。引入包,使用 extern crate 包名稱。例如time。use 類似C#裡面的 using,可以using包內的一些功能或者模組。例如我要獲取time裡面的now()方法,不過這個包看來現在沒有這個方法了。
Rust這方面的語法和C++還是比較接近,通過 :: 來進行引出下一級;類似.NET裡面的 XXX.XXX的這個句點。
20、咱們換一個,換成 chrono這個包
21、然後引入有關版本進來,同上面的time操作。因為time包沒有我要的,所以就幹掉就好了。
22、引入包,以及使用它裡面的所有功能模組,可以使用*來代替,這點跟Java或Python比較類似。
23、然後寫一個累加器,用來做效能測試使用。例如,從1累加到10億。程式碼可見下圖。
24、此處我再建立一個.NET 6都控制檯程式,也做同樣的事情,看看誰更快。有關程式碼,如下圖所示,功能與Rust的程式碼一模一樣。
25、為了更加公平,咱們把程式都編譯為release版本。使用命令 cargo build --release 可以指定編譯為release版本
26、VS上對.NET 6開發的程式,也編譯成release版本。
27、為了方便檢視效果,我們都在控制檯下面準備好這兩個程式。
28、兩個程式都執行一下看看效果。可以發現各自的大概耗時。Rust大約耗費40~50MS,.NET6編寫的大約耗費600~700MS,臥槽,差距有點大。
29、那再來個中間的語言,C++來看看效果。寫一個功能一模一樣的C++程式,也編譯為release版本,然後再看效果。由於C++版本輸出詳細時間,包括毫秒等,寫起來比較囉嗦,所以就簡單點,直接輸出耗時的毫秒數了。有關程式碼以及說明,見下圖。
30、C++的執行輸出結果,大約接近200MS,比.NET6快400MS,但是比Rust居然差距也這麼多?unbelievable!
31、為了客觀一點,咱再開啟Rust與.NET6的程式,以及和C++程式,再執行一下看看結果。結果如下圖所示,還是差不多的保持上面的結果。
32、總結一下:Rust依靠強大的效能,以及安全性(你寫程式碼的時候就可以感受到了,如果被檢測到程式碼不夠安全,波浪線或者錯誤提醒會一直提示你,直到你換個寫法),已經開始被更多的人採納。一些科普類的,就不繼續描述了,大佬們要是感興趣,可以自行去探索一下。如需轉載,請註明文章作者以及出處。
作者:Wesky, 原文出處【https://www.cnblogs.com/weskynet/p/16808320.html】
如需以上的三個demo原始碼專案,可以微信掃下方二維條碼,在公眾號內傳送【20221019】即可獲取。
以上就是該文章的全部內容,要是覺得有幫助,歡迎一鍵三連啊!!!
如果大佬們對.NET方向的技術感興趣,也歡迎在原文最下方加入我的QQ群。如需加微信群,可以私聊我微信進行加群: