我心目中的英雄
2010年03月21日
by 庆亮
0 comments
我是个凡人,但这并不影响我对英雄的仰慕、敬佩。王克勤,一个普通得名字,做的却是不普通的事!http://wangkeqin.blog.sohu.com/
2010年03月21日
by 庆亮
0 comments
我是个凡人,但这并不影响我对英雄的仰慕、敬佩。王克勤,一个普通得名字,做的却是不普通的事!http://wangkeqin.blog.sohu.com/
2010年03月10日
by 庆亮
0 comments
日志系统的重要性就不罗嗦了,直接开始吧。
一、基本概念
在Erlang中,通过两个概念管理错误事情:事件管理器(event manager)和事件处理句柄(event handles)。通常各种错误、警告和消息事件都会有Erlang运行时系统发送给事件管理器。在Erlang中,默认的事情管理器为error logger,其进程名注册为error_logger。默认情况下error_logger把这些事件直接输出到控制台上。 (全文…)
2010年03月9日
by 庆亮
0 comments
QQ群:PHP内核与扩展研究 48448818
PHP内核与扩展研究。加群请说明自己感兴趣领域或者擅长领域!否则一律不予通过,请谅
2010年02月26日
by 庆亮
0 comments
可以使用List comprehensions时不要 使用map或者filter,简单的性能测试对比一下:
第一组,map和list comprehensions对比,代码如下:
%%map方式
-module(map_test).
-export([start/1]).
start(N) ->
statistics(runtime),
erlang:statistics(wall_clock),
lists:map(fun (X) -> X*X end, lists:seq(1, N)),
{_, T1} = erlang:statistics(runtime),
{_, T2} = erlang:statistics(wall_clock),
io:format("total times: ~p, load time: ~p (~p)", [N, T1, T2]).
%%list comprehensions方式
-module(list_comp_test).
-export([start/1]).
start(N) ->
statistics(runtime),
erlang:statistics(wall_clock),
[X*X || X <- lists:seq(1, N)],
{_, T1} = erlang:statistics(runtime),
{_, T2} = erlang:statistics(wall_clock),
io:format("total times: ~p, load time: ~p (~p)", [N, T1, T2]).
测试N为1000000时结果对比:

结果取得是平均值,可以很明显的看出comprehension方式性能要高。
关于filter,则类似。不再作测试。
2010年02月3日
by 庆亮
0 comments
这段时间我们的项目遇到广播包的一些性能问题,想起之前看到yufeng老大提到的1s广播40K包的问题,我也想测试测试我们机器的IO能力。
这次仅仅测试发包的能力,采用的是一对一的方式。
测试代码: (全文…)
2010年01月18日
by 庆亮
0 comments
erlang的bif中自带了md5计算函数,但是结果却是二进制的,即使转成list,也是10进制表示,google了一下得到一段代码用于获得字符串形式的md5结果(16位):
md5(S) ->
Md5_bin = erlang:md5(S),
Md5_list = binary_to_list(Md5_bin),
lists:flatten(list_to_hex(Md5_list)).
list_to_hex(L) ->
lists:map(fun(X) -> int_to_hex(X) end, L).
int_to_hex(N) when N < 256 ->
[hex(N div 16), hex(N rem 16)].
hex(N) when N < 10 ->
$0+N;
hex(N) when N >= 10, N < 16 ->
$a + (N-10).
英文链接 http://sacharya.com/md5-in-erlang/