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


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

文章插图
16、定义一个方法/函数以及其他基础操作,可见下图标识说明 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
17、Rust的第三方包,都在 https://crates.io 上面 。类似于,.NET开发上面,对应的Nuget包网址一样 。不过Cargo目前没有VS这样的强大编译器集成了直接可视化查询的东西,所以我们需要自己手动查找要的包以及版本 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
18、例如我要用一个time包来做获取时间的 。我直接选个最新版本,0.3.15
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
然后在 cargo.toml里面,在dependencies里面添加该包的名称和版本号 。添加以后,会自动搜索有关版本进行下载引用 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
19、然后在代码内进行引入 。引入包,使用  extern crate 包名称 。例如time 。use 类似C#里面的 using,可以using包内的一些功能或者模块 。例如我要获取time里面的now()方法,不过这个包看来现在没有这个方法了 。
Rust这方面的语法和C++还是比较接近,通过 :: 来进行引出下一级;类似.NET里面的 XXX.XXX的这个句点 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
20、咱们换一个,换成 chrono这个包
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
21、然后引入有关版本进来,同上面的time操作 。因为time包没有我要的,所以就干掉就好了 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
22、引入包,以及使用它里面的所有功能模块,可以使用*来代替,这点跟Java或Python比较类似 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
23、然后写一个累加器,用来做性能测试使用 。例如,从1累加到10亿 。代码可见下图 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
24、此处我再创建一个.NET 6都控制台程序,也做同样的事情,看看谁更快 。有关代码,如下图所示,功能与Rust的代码一模一样 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
25、为了更加公平,咱们把程序都编译为release版本 。使用命令 cargo build --release  可以指定编译为release版本
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
【【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较】26、VS上对.NET 6开发的程序,也编译成release版本 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
27、为了方便查看效果,我们都在控制台下面准备好这两个程序 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

文章插图
28、两个程序都运行一下看看效果 。可以发现各自的大概耗时 。Rust大约耗费40~50MS,.NET6编写的大约耗费600~700MS,卧槽,差距有点大 。
【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

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

经验总结扩展阅读