Rust、Erlang 併發數量比較

  最近在看Rust,因而就心血來潮的把Rust的併發和erlang的拿來作比較,想看看誰支持的數量大。因而就有了下面的小片斷,皆因好空虛、好寂寞、好冷。
  個人機器配置以下:宏基4738G 筆記本,CPU Inter i3 2.53GHZ ,內存 2G


1)Rust代碼以下:  併發

fn main() {
  let mut i = 0;
  while i < 1000000 {
   println(fmt!("The %dth task", i));
   do spawn {loop{}};  //這個任務無限循環,不中止
   i += 1;
  }
}
 初學Rust,可能寫的比較蹩腳,別見笑。

2)Erlang代碼以下: oop

-module(spawntest).
-export([test/0, loop/1]).
loop(N) ->
  if N /= 0 ->
     io:format("the ~wth task has spawn~n", [N]);
	true-> void
  end,
  loop(0).   //無限循環,不中止
test()->
 [spawn(?MODULE, loop, [N]) || N <- lists:seq(1,1000000)].

運行結果以下圖:
 
Rust的到9萬多進程的時候,就Out of memory了。 


erlang到3萬多條就超出系統限制了,CMD裏 Erl + P 1000000,再運行,總是到1000多個的時候就看不到動靜了,也就懶得繼續了啊。。。 spa

沒有看到erlang傳說當中的上百萬進程。或者是個人代碼寫的很差?固然,Rust仍是一門在發展當中的語言,我相信它能變得更好。
歡迎各位看官拍磚,歡迎各類噴子。 code

相關文章
相關標籤/搜索