最近在看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