很多人推荐Rust,说是这门语言很厉害,执行速度靠近C,内存很安全,balalalalalla,我也顿时被吸引过去了,一直没有机会实验下,趁着今天还有钱上网,我做了下实验。

验证了下加法和乘法,这两个运算是科学计算必不可少的,当然还有其他的东西,比如浮点数、字符串等等,具体实现有傅立叶、矩阵、三角函数等等。

GO语言先下看代码。

func main() {
	runtime.GC()

	t := time.Now()
	sum := 0
	for i := 0; i < 20000; i++ {
		for j := 0; j < 20000; j++ {
			sum = sum + i*j
		}
	}
	fmt.Println(time.Now().Sub(t))
	fmt.Println(sum)
}

输出结果:

187.0107ms 。多执行几次时间区间很稳定,大约在180毫秒-188毫秒之间。

39996000100000000

 

Rust我刚下载下来没几分钟,看下文档写了个demo。

use std::time::SystemTime;
fn main() {

let sys_time = SystemTime::now();
println!("{:?}", sys_time);
let mut x = 0;
let mut i = 0;
let mut y:u64 = 0;
 while x<20000 {
   i=0;
    while i<20000 {
       y=y+x*i;
       i=i+1;
    }
    x=x+1;
  }


let sys_time1 = SystemTime::now();
println!("{:?}", sys_time1);
  println!("The value of y is: {}", y);
}

输出结果:

SystemTime { intervals: 131345635886368025 }
SystemTime { intervals: 131345635908319281 }
The value of y is: 39996000100000000

计算下:(90831-88636)/1000=2.195秒 ,多执行几次 ,结果在1.5秒-2.5秒之间

发现和GO的执行速度相差了接近10倍。

当我计算比这数据量还大的时候,等了半天没有结果,我还以为是机子的问题,因为我无论如何也不会联想到它的执行速度上。

在RUST中,不太方便搞for循环,因为那是和python中类似的一个for in迭代器,遍历的时候有非常大性能影响。剩下一个loop和while,不太方便,编写代码的时候不小心很容易造成死循环。

 

我用平时用得多的delphi7编译了下,计算结果用时1.25秒,delphi还是2002?由borland推出的,发现RUST的编译器,在处理加法和乘法的时候,还比不过15年前的产物。

 

var i,j,t:integer;
sum:double;
begin
      sum:=0;
      t:=Gettickcount ;
      for i:=0 to 20000-1 do
         for J:=0 to 20000-1 do
           sum:=sum +i*j;

      ts:=  Gettickcount-t;
      SHOWMESSAGE( INTTOSTR(ts )+'  '+ floattostr(SUM))

end;

end.

 

不过性能是要强于我们国产的易语言的,这是毋庸置疑的。否则没人拿去玩了。