【.NET番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

前言:突然想打算把Rust作为将来自己主要的副编程语言。当然,主语言还是C#,毕竟.NET平台这么强大,写起来就是爽。缘起:之前打算一些新的产品或者新的要开发的东西,由于没有历史包袱,就想重新选型一下,在.NET平台(C#语言)、Golang、Rust里面进行选择一个。后面随着多方面的对比,最终打算选择Rust,理由是:卧槽,性能有点6!!!于是,就有了下面这个文章,自己搭建环境时候,以及后续的一些基础的操作、性能比较,写成了这个文章,供大家参考戏谑。

废话不多说,直接开撸。以下均是在Windows环境下进行:

1、先安装Rust环境。Rust环境下载地址:https://www.rust-lang.org/zh-CN/tools/install

然后根据自己的需要,选择下载的版本。

7b539d340111358da04c6f0deb06522e.png

2、安装期间,会提示操作选项,我这边选择的是默认 1.安装完成以后,会有对应的提示。

ba33308c9f9f84492515980da16270f0.png

3、rustc --version可以查看rust环境的版本。

23f6754a17acc81db7b6a9113a9e57fd.png

4、查看cargo工具版本。rust程序的编译,离不开cargo。

e908a7275b6e23e6bdba2308085dcb55.png

5、如果需要对本地的rust环境进行升级,可以使用命令  rustip update(图片标识错了,大家看命令即可)

b741021450f5f1cf461f8c41c053a818.png

6、使用命令 rustup doc可以调出教程文档,不过都是英文的,英文好的大佬,用它来学习也是很不错的选择。

5e552d454a4df54fea4b343a6c41ede7.png

7、可以通过 cargo new 项目名称 来创建一个新的项目。创建以后,会有一些初始的内容。

38011dbfc2197852083a7c48bfd9dfd1.png

8、cargo build会进行编译,cargo run可以直接运行编译后的程序。默认创建的是一个hello world,所以可以直接输出。

3f5fd238e8ed6f9412ae04d6eb30c6f6.png

9、编译以后,在target文件夹内,会生成对应的可执行文件。cargo build默认是debug模式进行编译。

9e94971e66bdeecd45caf5f6ee794c92.png

10、我们也可以通过VS CODE来进行编辑代码和编译,效率高一点。

2407f2cdb76259ebf5c01084456adfc9.png

11、安装Rust的拓展。目前没这个拓展了,可以选择 rust-analyzer,应该是原先Rust的更新版本。也有一百多万的下载量了,看来玩的人有点多。

55e3d2935c5da1e85f543803f547aa0e.png

12、代码debug工具,这个看个人,可以不安装,没啥影响。配图可以不管。它只是提供了一个debug功能。

a4dde16834bcf35826f8b8a8addfe72e.png

13、VS CODE上面可以直接运行,运行时候默认会编译到代码文件同一个目录下。控制台也可以看到运行以后的输出结果。

bb3c03cd93e941d1155a86247276023f.png

14、一些基础语法说明,可以直接看下图标识和说明。

da402764cb50906824ca7a84c91e77ea.png

15、Rust的变量比较神奇,默认的变量都是不可变的,如果需要允许可变,需要添加mut关键字来区分。

a915e5fe8793bb548683b28b493a0b52.png

16、定义一个方法/函数以及其他基础操作,可见下图标识说明。

6f1a1a487eade79a59d05dfc668282e5.png

17、Rust的第三方包,都在 https://crates.io 上面。类似于,.NET开发上面,对应的Nuget包网址一样。不过Cargo目前没有VS这样的强大编译器集成了直接可视化查询的东西,所以我们需要自己手动查找要的包以及版本。

 4a17904321b8d4ff8d5e2e3d95b99db2.png

18、例如我要用一个time包来做获取时间的。我直接选个最新版本,0.3.15

a448d7b9f793ffffdb75332b727c9248.png

然后在 cargo.toml里面,在dependencies里面添加该包的名称和版本号。添加以后,会自动搜索有关版本进行下载引用。

20313672abc83466952ea9fd90b3cdc1.png

19、然后在代码内进行引入。引入包,使用  extern crate 包名称。例如time。use 类似C#里面的 using,可以using包内的一些功能或者模块。例如我要获取time里面的now()方法,不过这个包看来现在没有这个方法了。

Rust这方面的语法和C++还是比较接近,通过 ::来进行引出下一级;类似.NET里面的 XXX.XXX的这个句点。

b75816107ac805ef330bd2ff92bdfc98.png

20、咱们换一个,换成 chrono这个包

3e8e1bda579cd3c456fbe71da2c9918a.png

21、然后引入有关版本进来,同上面的time操作。因为time包没有我要的,所以就干掉就好了。

f0d16bbc2bff2cf968ac9c414db5844c.png

22、引入包,以及使用它里面的所有功能模块,可以使用*来代替,这点跟Java或Python比较类似。

424dd89d4dc672d928960e71514a93be.png

23、然后写一个累加器,用来做性能测试使用。例如,从1累加到10亿。代码可见下图。

48333417df0078e744a8d2b5315ad18f.png

24、此处我再创建一个.NET 6都控制台程序,也做同样的事情,看看谁更快。有关代码,如下图所示,功能与Rust的代码一模一样。

67ad1263781edf36ed9de105fafa511a.png

25、为了更加公平,咱们把程序都编译为release版本。使用命令 cargo build --release  可以指定编译为release版本

6893cd3b6153cc32c8cce38e16d03c90.png

26、VS上对.NET 6开发的程序,也编译成release版本。

22c8604b0aaaf721d2938e3b74d37415.png

27、为了方便查看效果,我们都在控制台下面准备好这两个程序。

acbf1aad33ef9e90d56441a5f0ddc556.png

28、两个程序都运行一下看看效果。可以发现各自的大概耗时。Rust大约耗费40~50MS,.NET6编写的大约耗费600~700MS,卧槽,差距有点大。

f3c0425a8f4b68634441bd9dffd23f82.png

29、那再来个中间的语言,C++来看看效果。写一个功能一模一样的C++程序,也编译为release版本,然后再看效果。由于C++版本输出详细时间,包括毫秒等,写起来比较啰嗦,所以就简单点,直接输出耗时的毫秒数了。有关代码以及说明,见下图。

b8e23d999e8c132ffa8c60ddb8a6c193.png

30、C++的运行输出结果,大约接近200MS,比.NET6快400MS,但是比Rust居然差距也这么多?unbelievable!

514421e9f8a1798527fd8209cda83988.png

31、为了客观一点,咱再打开Rust与.NET6的程序,以及和C++程序,再运行一下看看结果。结果如下图所示,还是差不多的保持上面的结果。

52c8db3c30636fcc83cebfeddaee4e5e.png

32、总结一下:Rust依靠强大的性能,以及安全性(你写代码的时候就可以感受到了,如果被检测到代码不够安全,波浪线或者错误提醒会一直提示你,直到你换个写法),已经开始被更多的人采纳。一些科普类的,就不继续描述了,大佬们要是感兴趣,可以自行去探索一下。

/

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值