• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Rust初步(五):Rust与C#性能比较

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我学习Rust的目的并不是说期望用它来取代掉现有的开发平台或语言。相反,我认为当前绝大部分研发团队,都不可能只用一个平台或者一个语言。

当组织增长,他们越来越依赖大量的编程语言。不同的编程语言有不同的能力和弱点,而一个多语言栈让你在某个特定的编程语言的优点起作用的时候能使用它,当它有缺陷时使用其他编程语言。

Rust 主要擅长的领域是:数值计算和线程。

我下面用一个实例来比较一下Rust和C#的性能方面表现。这个实例很简单,我们准备开启10个线程,然后在每个线程里面运行一个数值累加的工作任务(500万次。

注意,以下测试的耗时,可能在各位的电脑上面会因为配置的不同而不同。我的配置如下

extern crate time;

use std::thread;
use time::*;

fn main(){


    let start = time::now();//获取开始时间

    let handles :Vec<_> =(0..10).map(|_|{
        thread::spawn(||{
            let mut x= 0;
            for _ in (0..5_000_000){
                x+=1
            }
            x
        })
    }).collect();
    for h in handles{
        println!("Thread finished with count={}",h.join().map_err(|_| "Could not join a thread!").unwrap());
    }

    let end = time::now();//获取结束时间
    let duration = end - start;

    println!("耗时:{}",duration);
}

 

需要注意的是,为了做耗时统计,我们采用了time这个crate,如果有不清楚,请参考我之前的文章:

Rust初步(四):在rust中处理时间

 

这个程序,在debug模式下运行的耗时大约是 0.55秒

在release模式下运行的耗时大约是 0.002秒

 

C#的程序:

using System;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            Stopwatch watch = new Stopwatch();
            watch.Start();

            Parallel.For(0, 10, i =>
            {
                var x = 0;
                for (int j = 0;  j< 5000000; j++)
                {
                    x += 1;
                }
                Console.WriteLine("线程:{0} 完成计数",Thread.CurrentThread.ManagedThreadId);
            });


            watch.Stop();
            Console.WriteLine("耗时:{0}秒", watch.Elapsed.TotalSeconds);
            Console.Read();
        }
    }
}

 

在Debug模式下面运行的耗时约为0.06秒

在Release模式下运行的耗时约为0.012秒

 

汇总下来比较的结果如下

应该说C#新版本中对多线程管理是有了很大的提升的(包括语法很简化)。在Release模式下还是比较慢,是因为Rust是没有运行时的,而C#是要经过CLR运行的。

不过,在Debug模式下,居然C#大幅度胜出了,我感到很意外。从数值上来说,只能说Rust在Debug模式下很慢(可能做了很多事情?)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用MATLAB对数据进行绘图发布时间:2022-07-18
下一篇:
matlab 画图参考小程序 - 百里登峰发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap