Rust初步(五):Rust與C#性能比較

我學習Rust的目的並非說指望用它來取代掉現有的開發平臺或語言。相反,我認爲當前絕大部分研發團隊,都不可能只用一個平臺或者一個語言。css

當組織增加,他們愈來愈依賴大量的編程語言。不一樣的編程語言有不一樣的能力和弱點,而一個多語言棧讓你在某個特定的編程語言的優勢起做用的時候能使用它,當它有缺陷時使用其餘編程語言。html

Rust 主要擅長的領域是:數值計算和線程。編程

我下面用一個實例來比較一下Rust和C#的性能方面表現。這個實例很簡單,咱們準備開啓10個線程,而後在每一個線程裏面運行一個數值累加的工做任務(500萬次。多線程

注意,如下測試的耗時,可能在各位的電腦上面會由於配置的不一樣而不一樣。個人配置以下編程語言

image

Rust的程序

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秒學習

image

在release模式下運行的耗時大約是 0.002秒測試

image

 

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秒spa

image

在Release模式下運行的耗時約爲0.012秒pwa

image

 

彙總下來比較的結果以下

image

應該說C#新版本中對多線程管理是有了很大的提高的(包括語法很簡化)。在Release模式下仍是比較慢,是由於Rust是沒有運行時的,而C#是要通過CLR運行的。

不過,在Debug模式下,竟然C#大幅度勝出了,我感到很意外。從數值上來講,只能說Rust在Debug模式下很慢(可能作了不少事情?)

相關文章
相關標籤/搜索