美文网首页
测试本地ets、dets写入和读取速度

测试本地ets、dets写入和读取速度

作者: 码农工号9527 | 来源:发表于2019-05-29 16:56 被阅读0次

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}}}

相关文章

网友评论

      本文标题:测试本地ets、dets写入和读取速度

      本文链接:https://www.haomeiwen.com/subject/lqoytctx.html