浏览 1899 次
锁定老帖子 主题:leex文法分析的效率
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-12
注意用R13B03,因为R13B02的erlc漏掉了编译xrl格式。 以下是实验: root@nd-desktop:~# git clone git://github.com/rvirding/leex.git root@nd-desktop:~# cd leex/examples/ root@nd-desktop:~/leex/examples# cat test_scan.erl -module(test_scan). -export([start/1]). start([A])-> {ok, F} = file:open(atom_to_list(?MODULE)++".erl", [read]), {ok, S} = file:read(F, 9999999), file:close(F), N = list_to_integer(A), test(N, fun erlang_scan:string/1, S, "erlang_scan"), test(N, fun erl_scan:string/1, S, "erl_scan"), ok. test(N, F, S, Ts)-> Start = erlang:now(), dotimes(N, fun (_) -> F(S) end), io:format("~s run ~w ms~n", [Ts,round(timer:now_diff(now(), Start) /1000)]). dotimes(0, _) -> done; dotimes(N, F) -> F(N), dotimes(N - 1, F). root@nd-desktop:~/leex/examples# erlc erlang_scan.xrl root@nd-desktop:~/leex/examples# ls *.erl erlang_scan.erl test_scan.erl root@nd-desktop:~/leex/examples# erlc *.erl root@nd-desktop:~/leex/examples# erl -noshell -run test_scan start 10000 -s erlang halt erlang_scan run 2208 ms erl_scan run 1181 ms %% 这个版本稍微慢点 root@nd-desktop:~/leex/examples# erlc +native *.erl root@nd-desktop:~/leex/examples# erl -noshell -run test_scan start 10000 -s erlang halt erlang_scan run 1292 ms erl_scan run 1238 ms 结论是: leex产生的代码和手写的效率几乎差不多。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |