list comprehensions与list map性能对比
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,则类似。不再作测试。