ets 测试10000000条数据
-module(test).
-compile(export_all).
-define(TAB, tab_name).
%测试ets查询性能
test_ets(Num, Msg) ->
ets:new(?TAB, [named_table,public]),
InsertCostTime = timer:tc(?MODULE,insert, [Num, Msg]),
LookupCostTime = timer:tc(?MODULE,lookup, [Num]),
ets:delete(?TAB),
{{insert, InsertCostTime},{lookup, LookupCostTime}}.
insert(Num, _Msg) when Num =< 0 ->
ok;
insert(Num, Msg) ->
ets:insert(?TAB, {Num, Msg}),
insert(Num - 1, Msg).
lookup(Num) when Num =< 0 ->
ok;
lookup(Num) ->
ets:lookup(?TAB, 50),
lookup(Num -1).
erlang shell
$ erl
Eshell V8.3 (abort with ^G)
1> c(test).
{ok,test}
2> test:test_ets(10000000, "test").
{{insert,{15172000,ok}},{lookup,{1219000,ok}}}
由于dets速度太慢,测试1000000条数据
-module(test).
-compile(export_all).
-define(TAB, dets_test).
%测试dets查询性能
test_dets(Num, Msg) ->
dets:open_file(?TAB, [{type, set},{keypos, 1},{file,"dets_test.dets"}]),
InsertCostTime = timer:tc(?MODULE,insert, [Num, Msg]),
LookupCostTime = timer:tc(?MODULE,lookup, [Num]),
dets:close(?TAB),
{{insert, InsertCostTime},{lookup, LookupCostTime}}.
insert(Num, _Msg) when Num =< 0 ->
ok;
insert(Num, Msg) ->
dets:insert(?TAB, {Num, Msg}),
insert(Num - 1, Msg).
lookup(Num) when Num =< 0 ->
ok;
lookup(Num) ->
dets:lookup(?TAB, 50),
lookup(Num -1).
search(Num) ->
dets:lookup(?TAB, Num).
erlang shell
$ erl
Eshell V8.3 (abort with ^G)
1> c(test).
{ok,test}
2> test:test_dets(10000,"test").
{{insert,{188000,ok}},{lookup,{156000,ok}}}
3> test:test_dets(1000000,"test").
{{insert,{27282000,ok}},{lookup,{19078000,ok}}}
网友评论