【番外篇】Rust環境搭建+基礎開發入門+Rust與.NET6、C++的基礎運算性能比較

前言:突然想打算把Rust作為將來自己主要的副編程語言。當然,主語言還是C#,畢竟.NET平台這麼強大,寫起來就是爽。緣起:之前打算一些新的產品或者新的要開發的東西,由於沒有歷史包袱,就想重新選型一下,在.NET平台(C#語言)、Golang、Rust裏面進行選擇一個。後面隨着多方面的對比,最終打算選擇Rust,理由是:卧槽,性能有點6!!!於是,就有了下面這個文章,自己搭建環境時候,以及後續的一些基礎的操作、性能比較,寫成了這個文章,供大家參考戲謔。

廢話不多說,直接開擼。以下均是在Windows環境下進行:

1、先安裝Rust環境。Rust環境下載地址://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的第三方包,都在 //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, 原文出處【//www.cnblogs.com/weskynet/p/16808320.html】

 如需以上的三個demo源碼項目,可以微信掃下方二維碼,在公眾號內發送【20221019】即可獲取。

 

 

以上就是該文章的全部內容,要是覺得有幫助,歡迎一鍵三連啊!!!

如果大佬們對.NET方向的技術感興趣,也歡迎在原文最下方加入我的QQ群。如需加微信群,可以私聊我微信進行加群:

 

 

Tags: