Erlang 进程创建性能测试

测试代码来自 Progremming Erlang。
Erlang: R13B (erts-5.7.1), 启动参数 +P 5000000
系统: Window XP
CPU: E8200 2.66G 双核
内存: 4G
Erlang R13B (erts-5.7.1) [smp:2:2] [rq:2] [async-threads:0]
Eshell V5.7.1  (abort with ^G)
1> c(processes).
{ok,processes}
2> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 2.703(2.688) microseconds
ok
3> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 3.203(2.938) microseconds
ok
4> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 3.25(3.015) microseconds
ok
结果:
创建100W,平均3us左右。因为物理内存比较多。测试时内存高峰在1.2G左右, 由此可以估计一下进程的内存消耗。
测试创建200W, 150W都不能正常运行。测试时,内存到1.8G以上时,werl进程死循环。不能结束。
在WINDOW下,单进程的内存不能超过2G。可见,进程的上限也就100W多一点吧。如果加上其它开销。单个结点能创建的进程数量还会少很多。
看下测试代码 for函数的编写并不是最优化的方式,改成尾递归形式:
for(I, N, F) -> for_h(I, N, F, []).
for_h(_N, _N, _, L) -> L;
for_h(I, N, F, L) -> for_h(I+1, N, F, [F()|L]).
再测试:
5> c(processes).
{ok,processes}
6> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 1.891(1.64) microseconds
ok
7> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 2.266(1.641) microseconds
ok
8> processes:max(1000000).
Maximum allowed processes:5000000
Process spawn time = 2.234(1.625) microseconds
ok
结果在2us左右,看来尾递归还是影响挺大。


最新内容请见作者的GitHub页:http://qaseven.github.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux bash shell基础语法

转自:http://blog.sina.com.cn/s/blog_46177c3401014fty.html一、Shell基本类型的变量:(1)Shell定义的环境变量:Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量…

通俗理解T检验与F检验的区别【转】

转自:http://blog.sina.com.cn/s/blog_4ee13c2c01016div.html1,T检验和F检验的由来一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定。 通过把…

shell之通过if [ $? != 0 ]判断上次程序是否执行成功

1、问题 在shell脚本里面有时候我们需要判断上一个程序有没有执行成功,比如用chomd 777 file命令,我们可以用通过if [ $? ! 0 ]判断 $?这里表示上一次运行的结果 2、代码实现 #!/bin/bashtest() {return 2; }testresult$?echo "result is:&q…

哄媳妇

1、如果你的女人在你面前哭了,无论什么原因,请抱紧她,再反抗也要抱紧,趴在桌子上永远没有在你怀里安心; 2、如果你的女人指出了你的不是,请不要总是嫌她唠叨,若不是因为在乎她不会说你&#xff…

自己搭建一个k8s环境

背景Kubernetes 是时下流行的容器编排引擎,因为字母太多,且掐头去尾后剩下 8 个字母,于是被大家亲切的缩写为 k8s。Kubernetes https://kubernetes.io/另外所谓“云原生”概念火爆,各大云厂商也纷纷推出了自己的容器服务&#xff…

大数据在金融领域的应用及问题时

互联网使信息变的扁平,但是信息的利用效率却没有得到提高,因为技术的限制和认知的局限,海量的信息无法深度挖掘价值,甚至是信息本身被直接忽视。很多情况下人们能看到的只是互联网的便利,而挖掘信息背后的价值则无从做…

个人电脑 公司电脑 代理_这样的电脑谁来用?一体式水冷,磁悬浮风扇!

原标题:这样的电脑谁来用?一体式水冷,磁悬浮风扇!海盗船是个人电脑市场资历最老、信誉最好的个人电脑元件制造商之一。该公司最初的产品主要是和存储相关的,后来,海盗船开始慢慢向其他细分市场扩张。虽然他…

VMware虚拟机中CentOS网络设置

在VMware虚拟机中安装了一个CentOS系统,试着学习了一下该系统下的网络设置,记录如下: VMware虚拟机中比较方便的联网方式是NAT方式,这里采用该方式。 CentOS默认使用ipv6协议联网,则虚拟机会给该系统分配ipv6地址&…

filegetcontents php 返回值,php – file_get_contents没有返回任何数据

标签:php所以我正在使用足球联赛API,我让它返回我需要的数据.然而,它现在突然停止工作,我不知道为什么.class leagueTable {public $data;public $baseUri;public $config;public $tr;public function __construct($payload) {$this->data $payload;$this->c…

shell之用command在终端判断是否存在这个命令

1、command解释 command命令在shell脚本里面,如果发现有个函数和我们需要执行的命令同名,我们可以用command用来强制执行后面的命令,而不是同名函数,然后我们也可以在shell脚本里面判断莫个命令是否存在,我们平时一般…

关于.NET

.NET简单分析: .Net目前主要的开发方向主要分为:Web开发、桌面系统开发、移动开发。1、Web开发:通俗的说就是开发网站,包括类似于大众点评网等这样的互联网以及OA等内网系统,Web开发是目前.Net开发的主要方向。&#x…

沿途风景

1.麦积山(甘肃省天水市麦积区)2014年8月27日 2.柳湖公园(甘肃省平凉市)2014年8月25日 3.崆峒山(甘肃省平凉市)2014年8月26日 4.净土寺(甘肃省天水市麦积区)2014年8月27日 5.仙人崖&a…

如何格式化电脑_移动硬盘提示格式化如何解决?数据恢复软件解决问题

使用移动硬盘的时候, 硬盘用久了,会出现各种各样的错误,最终导致无法使用,常常出现提示“格式化”,这时候就挺烦恼的,如果使用不当的话,就会引发各种奇怪的问题,其中最严重的的就是提…

运营商在万物互联扮演什么角色?上海联通NB-IoT奠定基础

万物互联时代,人与人、人与物、物与物之间都通过网络进行更紧密的联系,实现更智能、更安全化的生活。而刚刚冻结标准的窄带物联网(NB-IoT)也成为本届“世界移动大会上海”上的焦点,联通的展台将会展出与华为合作的NB-I…

在 WASI 上运行 .NET 7 应用程序

WASI代表 WebAssembly 系统接口,WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统,允许独立于浏览器运行 WebAssembly 代码。这是一个高度实验性的项目,但同时也是一个非常有趣的项目,并且有可能…

Android之通过ContentProvider实现两个app(进程间)间通信以及函数调用

1、ContentProvider简单介绍 ContentProvider以在不同的应用程序之间共享数据,ContentProvider底层实现是Binder,它为存储和获取数据提供统一的接口 2、实现哪些功能? 比如我们有两个app,分别是ContentProviderServer和ContentProviderClient 1)、需要在app里面ContentPro…

html服务器端运行python,如何通过点击网页在远程服务器上运行python脚本?

我在远程服务器上有一个python程序。我需要创建一个web页面(html代码和服务器上python脚本所在的目录相同)有一个按钮,单击哪个python脚本应该运行。还有一件事是我们需要从本地机器上选择一个文件,然后python脚本将该文件作为输入,运行并输出…

Windows Server 2008常见问题及解决方法

1.如何安装Windows Server 2008 ? 可以采取两种方式:一是硬盘安装,二是光盘安装。 2.安装到最后一步提示输入密码,我怎么输了N次都过不去呢? 输入错误。Windows Server 2008要求采取比较复杂的密码方式,如…

LeetCode - 3Sum Closest

题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution. For example, given ar…

SDUT OJ -2892 A

A Time Limit: 60ms Memory limit: 65536K 有疑问&#xff1f;点这里^_^ 题目描写叙述 给出n(1< n && n < 2*10^6)个字符串,每一个字符串仅仅包括小写英文字母。且最多有五个。问这n个字符串中出现次数最多的有多少个。输入 单组输入。第一行输入一个数字n&am…