Erlang下merle与php连接memcache性能对比测试
构建测试代码:
- -module(test).
- -export([
- run/0
- ]).
- run()->
- statistics(runtime),
- run(10000).
- run(0)->
- {_, Time} = statistics(runtime),
- io:format("running time: ~p ms ~n", [Time]),
- ok;
- run(N)->
- merle:connect("localhost", 11211),
- merle:set("test","this is a test"),
- merle:getkey("test"),
- %%io:format("running time: ~p ms ~n", [merle:getkey("test")]),
- run(N-1).
复制代码
测试结果:
1> c(test).
{ok,test}
2> test:run().
running time: 1609 ms
ok
php对比测试代码:
- <?php
- $t=microtime(true);
- $memcache=new memcache();
- for($i=0;$i<=10000;$i++)
- {
- $memcache->connect('localhost', 11211); //改成pconnect
- $memcache->set("test","this is a test",0,0);
- $memcache->get("test");
- }
- echo 'running time:'.(microtime(true)-$t);
- ?>
复制代码
10000次连接下出现致命错误,无法连接,改成100,结果是:
running time:9.05131578445
看来使用connect时超出了最大连接数,
遂将connect连接改成pconnect后运行正常
running time:1.68815517426
而merle则默认使用长连接。
测试结论,还毫无优化的前提,Erlang下的merle性能还是比较可靠的。
测试环境:winxp/2G内存/2.2G双核
[ 本帖最后由 bs 于 2009-12-4 16:38 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
本帖最后由 bs 于 2010-05-04 19:31 编辑
基于gen_server2的,应该不是,关闭发生在主进程结束时
terminate(_Reason, Socket) ->
io:fwrite("test.~n"), %%最笨的方法就是这边加入调试
gen_tcp:close(Socket),
ok.
不错不错..
不过有个问题:
,Erlang链接memcachd操作完之后,
是不是会自动把链接断开的,然后在下次访问的时候,再重新链接?