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代码如下:
-module(spawn**).
-export().
loop(N) ->
if N /= 0 ->
io:format("the ~wth task has spawn~n", );
true-> void
end,
loop(0). //无限循环,不停止
**()->
[spawn(?MODULE, loop, ) || N <- lists:seq(1,1000000)].运行结果如下图:
Rust的到9万多进程的时候,就Out of memory了。
erlang到3万多条就超出系统限制了,CMD里 Erl + P 1000000,再运行,老是到1000多个的时候就看不到动静了,也就懒得继续了啊。。。
没有看到erlang传说当中的上百万进程。或者是我的代码写的不好?当然,Rust还是一门在发展当中的语言,我相信它能变得更好。
欢迎各位看官拍砖,欢迎各种喷子。
我的机器配置如下:宏基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代码如下:
-module(spawn**).
-export().
loop(N) ->
if N /= 0 ->
io:format("the ~wth task has spawn~n", );
true-> void
end,
loop(0). //无限循环,不停止
**()->
[spawn(?MODULE, loop, ) || N <- lists:seq(1,1000000)].运行结果如下图:
Rust的到9万多进程的时候,就Out of memory了。
erlang到3万多条就超出系统限制了,CMD里 Erl + P 1000000,再运行,老是到1000多个的时候就看不到动静了,也就懒得继续了啊。。。
没有看到erlang传说当中的上百万进程。或者是我的代码写的不好?当然,Rust还是一门在发展当中的语言,我相信它能变得更好。
欢迎各位看官拍砖,欢迎各种喷子。
没有找到相关结果
已邀请:
1 个回复
[已注销]
static/image/common/sigline.gif
90%打工小伙一生都不可能知道的秘密http://user.qzone.qq.com/82175487