参照《programing erlang》书例子,测试erlang创建进程性能
创建N个进程 都wait,然后挨个发送die关闭进程,代码如下:
测试场景:200w进程、MacBook Pro 2013(I5/16G)
测试结果:
processes:max(2000000).
Maximun allowed processes:16777216
Process spawn time Total 8.09(15.262)s,item 4.045(7.631)us
运行进程CPU占用130%,内存峰值5.8G,实际程序运行实际为28s(发送消息关闭进程和创建进程耗时差不多)
结论:在我机器上每个进程占用2.9K内存,对于创建线程,单线程13w/s,erlang进程真的是非常轻量级;
但也并不便宜,创建-处理消息-关闭单线程7w/s,如果每个新请求都新建一个进程去处理还是很奢侈的。