|
|
- -module(utEtsOrdDs).
- -compile([nowarn_unused_function, nowarn_unused_vars, nowarn_export_all]).
-
- -export([start/2]).
-
- start(Num, Pid) ->
- Ds = init(Num),
- Time1 = erlang:monotonic_time(),
- NewDsI = insert(Num, Ds),
- Time2 = erlang:monotonic_time(),
- NewDsR = read(Num, NewDsI),
- Time3 = erlang:monotonic_time(),
- NewDsU = update(Num, NewDsR),
- Time4 = erlang:monotonic_time(),
- NewDsF = for(Num, NewDsU),
- Time5 = erlang:monotonic_time(),
- delete(Num, NewDsF),
- Time6 = erlang:monotonic_time(),
- erlang:send(Pid, {over, self(), Time2 - Time1, Time3 - Time2, Time4 - Time3, Time5 - Time4, Time6 - Time5, ets:info(Ds, memory)}),
- exit(normal).
-
- init(_Num) ->
- ets:new(test, [ordered_set]).
-
- insert(0, Ds) ->
- Ds;
- insert(Num, Ds) ->
- Key = utTestDs:makeK(Num),
- Value = utTestDs:makeV(Num),
- ets:insert(Ds, {Key, Value}),
- insert(Num - 1, Ds).
-
- read(0, Ds) ->
- Ds;
- read(Num, Ds) ->
- Key = utTestDs:makeK(Num),
- Value = ets:lookup(Ds, Key),
- read(Num - 1, Ds).
-
- update(0, Ds) ->
- Ds;
- update(Num, Ds) ->
- Key = utTestDs:makeK(Num),
- Value = utTestDs:makeV2(Num),
- ets:update_element(Ds, Key, {2, Value}),
- update(Num - 1, Ds).
-
- for(Num, Ds) ->
- Fun =
- fun({Key, Value}, Acc) ->
- Value
- end,
- List = ets:foldl(Fun, [], Ds),
- Ds.
-
- delete(0, Ds) ->
- ok;
- delete(Num, Ds) ->
- Key = utTestDs:makeK(Num),
- ets:delete(Ds, Key),
- delete(Num - 1, Ds).
-
-
|