From fc12f27875e5d3557658f2dfbe43c4aee933718d Mon Sep 17 00:00:00 2001 From: SisMaker <156736github> Date: Sun, 26 Dec 2021 00:54:12 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E5=85=B1=E4=BA=AB=E9=98=9F=E5=88=97?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dataType/utLifo.erl | 99 +++++++++++ src/dataType/utRiro.erl | 56 ++++++ src/docs/erlang/erlang-SDsBenchMark1.md | 208 +++++++++++++++++++++++ src/measure/DsTestSimple/utSQueueDs.erl | 46 +++++ src/measure/DsTestSimple/utSTestDs.erl | 4 +- src/measure/DsTestSimple/utSUtLifoDs.erl | 51 ++++++ src/measure/DsTestSimple/utSUtRiroDs.erl | 51 ++++++ 7 files changed, 513 insertions(+), 2 deletions(-) create mode 100644 src/dataType/utLifo.erl create mode 100644 src/dataType/utRiro.erl create mode 100644 src/docs/erlang/erlang-SDsBenchMark1.md create mode 100644 src/measure/DsTestSimple/utSQueueDs.erl create mode 100644 src/measure/DsTestSimple/utSUtLifoDs.erl create mode 100644 src/measure/DsTestSimple/utSUtRiroDs.erl diff --git a/src/dataType/utLifo.erl b/src/dataType/utLifo.erl new file mode 100644 index 0000000..2a99b48 --- /dev/null +++ b/src/dataType/utLifo.erl @@ -0,0 +1,99 @@ +-module(utLifo). + +-export([ + new/1 + , del/1 + , in/2 + , out/1 + , clear/1 + , size/1 +]). + +-spec new(Name :: atom()) -> ok | name_used. +new(Name) -> + case persistent_term:get(Name, undefined) of + undefined -> + ARef = atomics:new(1, [{signed, false}]), + ets:new(Name, [set, named_table, {write_concurrency, true}]), + persistent_term:put(Name, ARef), + ok; + _ -> + case ets:info(Name, id) of + undefined -> + ets:new(Name, [set, named_table, {write_concurrency, true}]); + _ -> + name_used + end + end. + +-spec del(Name :: atom()) -> ok | error_lifo. +del(Name) -> + case persistent_term:get(Name, undefined) of + undefined -> + error_lifo; + _ -> + persistent_term:erase(Name), + ets:delete(Name), + ok + end. + +-spec in(Name :: atom(), Value :: term()) -> true | false | error_lifo. +in(Name, Value) -> + case persistent_term:get(Name, undefined) of + undefined -> + error_lifo; + ARef -> + in(ARef, Name, Value) + end. + +in(ARef, Name, Value) -> + Index = atomics:add_get(ARef, 1, 1), + case ets:insert_new(Name, {Index, Value}) of + true -> + true; + _ -> + in(ARef, Name, Value) + end. + +-spec out(Name :: atom()) -> error_lifo | empty | Value :: term(). +out(Name) -> + case persistent_term:get(Name, undefined) of + undefined -> + error_lifo; + ARef -> + out(ARef, Name) + end. + +out(ARef, Name) -> + Index = atomics:sub_get(ARef, 1, 1), + case ets:take(Name, Index + 1) of + [] -> + case ets:info(Name, size) of + 0 -> + empty; + _ -> + out(ARef, Name) + end; + [{_, Value}] -> + Value + end. + +-spec clear(Name :: atom()) -> error_lifo | ok. +clear(Name) -> + case persistent_term:get(Name, undefined) of + undefined -> + error_lifo; + _ -> + ets:delete_all_objects(Name), + ok + end. + +-spec size(Name :: atom()) -> Size :: integer() | error_lifo. +size(Name) -> + case ets:info(Name, size) of + undefined -> + error_lifo; + Size -> + Size + end. + diff --git a/src/dataType/utRiro.erl b/src/dataType/utRiro.erl new file mode 100644 index 0000000..2d7bea9 --- /dev/null +++ b/src/dataType/utRiro.erl @@ -0,0 +1,56 @@ +-module(utRiro). + +-compile(inline). +-compile({inline_size, 128}). + +-export([ + new/1 + , del/1 + , in/2 + , out/1 + , clear/1 + , size/1 +]). + +-spec new(Name :: atom()) -> ok | name_used. +new(Name) -> + case ets:info(Name, id) of + undefined -> + ets:new(Name, [ordered_set, named_table, {write_concurrency, true}]); + _ -> + name_used + end. + +-spec del(Name :: atom()) -> ok | error_lifo. +del(Name) -> + ets:delete(Name). + +-spec in(Name :: atom(), Value :: term()) -> true | false | error_lifo. +in(Name, Value) -> + ets:insert_new(Name, {Value}). + +-spec out(Name :: atom()) -> empty | Value :: term(). +out(Name) -> + do_out(Name). + +do_out(Name) -> + case ets:last(Name) of + '$end_of_table' -> + empty; + Key -> + case ets:take(Name, Key) of + [] -> + do_out(Name); + [{Value}] -> + Value + end + end. + +-spec clear(Name :: atom()) -> ok. +clear(Name) -> + ets:delete_all_objects(Name). + +-spec size(Name :: atom()) -> Size :: integer() | undefined. +size(Name) -> + ets:info(Name, size). + diff --git a/src/docs/erlang/erlang-SDsBenchMark1.md b/src/docs/erlang/erlang-SDsBenchMark1.md new file mode 100644 index 0000000..78929b9 --- /dev/null +++ b/src/docs/erlang/erlang-SDsBenchMark1.md @@ -0,0 +1,208 @@ +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SPdDs 8 80.13ns 19.98ns 26.35ns 63.54ns 34.70ns noSize +SPdDs 16 63.62ns 11.57ns 17.93ns 41.24ns 21.06ns noSize +SPdDs 32 44.22ns 8.38ns 14.96ns 83.52ns 20.37ns noSize +SPdDs 64 74.69ns 6.83ns 13.11ns 62.08ns 19.46ns noSize +SPdDs 128 74.70ns 5.89ns 12.26ns 61.83ns 16.32ns noSize +SPdDs 256 70.21ns 5.42ns 12.23ns 52.02ns 14.88ns noSize +SPdDs 516 64.96ns 5.23ns 12.04ns 51.18ns 13.98ns noSize +SPdDs 1024 69.11ns 5.13ns 12.81ns 49.87ns 12.97ns noSize +SPdDs 2048 56.03ns 5.09ns 12.22ns 54.59ns 12.39ns noSize +SPdDs 4096 55.63ns 5.24ns 11.58ns 53.83ns 12.23ns noSize + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +STupleDs 8 39.02ns 16.45ns 30.01ns 15.59ns notSupport 80 +STupleDs 16 94.52ns 10.67ns 69.25ns 10.13ns notSupport 144 +STupleDs 32 108.77ns 7.18ns 42.66ns 6.91ns notSupport 272 +STupleDs 64 93.72ns 5.23ns 67.22ns 5.18ns notSupport 528 +STupleDs 128 111.16ns 4.40ns 108.54ns 4.36ns notSupport 1040 +STupleDs 256 180.01ns 3.95ns 174.05ns 4.02ns notSupport 2064 +STupleDs 516 359.42ns 3.64ns 339.78ns 3.57ns notSupport 4144 +STupleDs 1024 527.74ns 3.47ns 509.43ns 3.44ns notSupport 8208 +STupleDs 2048 1112.67ns 3.32ns 1092.55ns 3.53ns notSupport 16400 +STupleDs 4096 1993.53ns 3.46ns 1994.36ns 3.41ns notSupport 32784 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SListsDs 8 17.02ns 35.56ns 54.48ns 12.61ns 50.80ns 328 +SListsDs 16 12.31ns 31.74ns 125.96ns 8.31ns 137.08ns 648 +SListsDs 32 9.73ns 41.02ns 226.87ns 5.67ns 152.55ns 1288 +SListsDs 64 28.85ns 72.18ns 368.05ns 4.57ns 297.92ns 2568 +SListsDs 128 50.87ns 128.78ns 561.09ns 3.74ns 481.60ns 5128 +SListsDs 256 61.23ns 251.98ns 886.71ns 3.48ns 822.72ns 10248 +SListsDs 516 68.01ns 456.31ns 1844.14ns 3.34ns 1576.32ns 20648 +SListsDs 1024 46.12ns 969.88ns 3335.85ns 4.14ns 3474.52ns 40968 +SListsDs 2048 40.00ns 2079.84ns 6887.37ns 3.82ns 7109.81ns 81928 +SListsDs 4096 44.93ns 4328.40ns 13819.91ns 3.91ns 13615.04ns 163848 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SMapsDs 8 54.40ns 23.98ns 51.30ns 209.22ns 45.83ns 168 +SMapsDs 16 134.34ns 17.34ns 91.29ns 31.56ns 77.61ns 296 +SMapsDs 32 142.40ns 18.99ns 93.63ns 22.43ns 40.18ns 552 +SMapsDs 64 159.52ns 24.30ns 138.39ns 24.09ns 80.24ns 1976 +SMapsDs 128 164.44ns 23.15ns 169.39ns 20.31ns 113.94ns 3736 +SMapsDs 256 176.24ns 26.18ns 148.01ns 22.02ns 121.37ns 7528 +SMapsDs 516 187.36ns 26.40ns 224.19ns 61.37ns 132.19ns 15560 +SMapsDs 1024 208.07ns 23.51ns 295.84ns 38.56ns 142.12ns 30392 +SMapsDs 2048 262.29ns 25.09ns 267.79ns 26.48ns 185.66ns 59896 +SMapsDs 4096 280.60ns 28.36ns 298.79ns 28.84ns 138.76ns 122648 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SQueueDs 8 28.40ns 72.75ns notSupport notSupport notSupport 160 +SQueueDs 16 23.69ns 123.45ns notSupport notSupport notSupport 288 +SQueueDs 32 18.55ns 102.87ns notSupport notSupport notSupport 544 +SQueueDs 64 27.61ns 75.82ns notSupport notSupport notSupport 1056 +SQueueDs 128 30.60ns 68.49ns notSupport notSupport notSupport 2080 +SQueueDs 256 36.99ns 50.56ns notSupport notSupport notSupport 4128 +SQueueDs 516 28.62ns 56.89ns notSupport notSupport notSupport 8288 +SQueueDs 1024 28.97ns 54.38ns notSupport notSupport notSupport 16416 +SQueueDs 2048 29.66ns 53.49ns notSupport notSupport notSupport 32800 +SQueueDs 4096 25.83ns 63.59ns notSupport notSupport notSupport 65568 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SUtRiroDs 8 296.41ns 386.44ns notSupport notSupport notSupport 117 +SUtRiroDs 16 261.76ns 364.24ns notSupport notSupport notSupport 117 +SUtRiroDs 32 245.98ns 348.34ns notSupport notSupport notSupport 117 +SUtRiroDs 64 241.25ns 367.00ns notSupport notSupport notSupport 117 +SUtRiroDs 128 245.70ns 365.11ns notSupport notSupport notSupport 117 +SUtRiroDs 256 250.23ns 368.19ns notSupport notSupport notSupport 117 +SUtRiroDs 516 242.42ns 373.04ns notSupport notSupport notSupport 117 +SUtRiroDs 1024 245.76ns 370.70ns notSupport notSupport notSupport 117 +SUtRiroDs 2048 249.26ns 374.47ns notSupport notSupport notSupport 117 +SUtRiroDs 4096 257.05ns 371.40ns notSupport notSupport notSupport 117 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SUtLifoDs 8 317.24ns 268.39ns notSupport notSupport notSupport 1329 +SUtLifoDs 16 275.92ns 244.39ns notSupport notSupport notSupport 1329 +SUtLifoDs 32 262.41ns 265.32ns notSupport notSupport notSupport 1329 +SUtLifoDs 64 255.59ns 259.48ns notSupport notSupport notSupport 1329 +SUtLifoDs 128 258.81ns 247.60ns notSupport notSupport notSupport 1329 +SUtLifoDs 256 260.08ns 250.77ns notSupport notSupport notSupport 1329 +SUtLifoDs 516 280.68ns 251.70ns notSupport notSupport notSupport 3639 +SUtLifoDs 1024 305.45ns 255.90ns notSupport notSupport notSupport 3639 +SUtLifoDs 2048 310.07ns 257.11ns notSupport notSupport notSupport 3639 +SUtLifoDs 4096 303.32ns 276.50ns notSupport notSupport notSupport 3639 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SEtsSetDs 8 170.68ns 78.76ns 76.22ns 253.88ns 122.14ns 305 +SEtsSetDs 16 145.07ns 61.96ns 62.01ns 257.71ns 104.42ns 305 +SEtsSetDs 32 127.97ns 95.35ns 56.69ns 158.26ns 95.27ns 305 +SEtsSetDs 64 121.14ns 85.60ns 53.82ns 126.68ns 94.26ns 305 +SEtsSetDs 128 123.89ns 64.25ns 55.57ns 113.20ns 90.72ns 305 +SEtsSetDs 256 127.07ns 60.45ns 54.83ns 104.84ns 91.83ns 305 +SEtsSetDs 516 137.46ns 57.78ns 54.82ns 102.99ns 92.36ns 2615 +SEtsSetDs 1024 141.47ns 57.49ns 53.41ns 109.25ns 105.95ns 2615 +SEtsSetDs 2048 146.04ns 57.43ns 53.97ns 106.56ns 106.78ns 2615 +SEtsSetDs 4096 158.02ns 57.63ns 55.51ns 103.48ns 109.00ns 2615 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SEtsOrdDs 8 174.38ns 77.72ns 77.21ns 201.61ns 113.06ns 139 +SEtsOrdDs 16 145.09ns 64.18ns 58.92ns 223.09ns 102.91ns 139 +SEtsOrdDs 32 137.32ns 103.13ns 56.42ns 140.78ns 98.75ns 139 +SEtsOrdDs 64 135.51ns 98.40ns 58.39ns 121.06ns 104.44ns 139 +SEtsOrdDs 128 140.88ns 76.99ns 65.24ns 110.19ns 101.41ns 139 +SEtsOrdDs 256 142.73ns 73.86ns 68.06ns 105.57ns 102.80ns 139 +SEtsOrdDs 516 142.01ns 73.25ns 69.11ns 104.67ns 102.00ns 139 +SEtsOrdDs 1024 144.61ns 74.09ns 70.48ns 109.86ns 112.50ns 139 +SEtsOrdDs 2048 151.13ns 76.35ns 71.70ns 106.10ns 112.72ns 139 +SEtsOrdDs 4096 150.29ns 77.59ns 74.27ns 103.33ns 113.56ns 139 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SArrayDs 8 73.42ns 32.90ns 198.03ns 25.91ns notSupport 144 +SArrayDs 16 217.84ns 37.08ns 186.88ns 35.46ns notSupport 328 +SArrayDs 32 173.94ns 31.55ns 123.50ns 30.47ns notSupport 504 +SArrayDs 64 157.17ns 29.36ns 97.65ns 28.87ns notSupport 768 +SArrayDs 128 155.00ns 49.81ns 131.44ns 48.97ns notSupport 1488 +SArrayDs 256 144.80ns 49.11ns 145.37ns 47.57ns notSupport 2728 +SArrayDs 516 142.70ns 46.55ns 136.24ns 46.69ns notSupport 5304 +SArrayDs 1024 185.99ns 66.72ns 177.52ns 66.45ns notSupport 10464 +SArrayDs 2048 186.80ns 67.75ns 164.59ns 65.80ns notSupport 20496 +SArrayDs 4096 174.53ns 65.26ns 166.03ns 65.05ns notSupport 40648 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SDictDs 8 679.58ns 93.83ns 611.73ns 58.69ns 164.28ns 632 +SDictDs 16 357.09ns 81.05ns 306.51ns 31.82ns 178.94ns 888 +SDictDs 32 308.13ns 79.40ns 231.73ns 21.88ns 169.57ns 1400 +SDictDs 64 278.26ns 83.68ns 249.01ns 17.16ns 201.38ns 2424 +SDictDs 128 352.86ns 96.46ns 265.91ns 16.39ns 243.84ns 4616 +SDictDs 256 409.38ns 98.76ns 270.41ns 15.54ns 230.16ns 9000 +SDictDs 516 412.71ns 98.04ns 257.45ns 15.24ns 241.61ns 17896 +SDictDs 1024 462.56ns 92.94ns 344.93ns 15.21ns 247.46ns 35304 +SDictDs 2048 488.54ns 96.59ns 367.79ns 14.96ns 236.98ns 70376 +SDictDs 4096 503.00ns 106.03ns 325.94ns 16.02ns 249.15ns 140520 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SGb_treesD 8 282.60ns 31.91ns 133.26ns 26.57ns 108.51ns 352 +SGb_treesD 16 256.45ns 26.63ns 103.55ns 47.68ns 52.52ns 672 +SGb_treesD 32 394.83ns 48.48ns 116.34ns 16.19ns 61.93ns 1312 +SGb_treesD 64 408.46ns 50.54ns 114.08ns 27.13ns 49.88ns 2592 +SGb_treesD 128 509.10ns 53.13ns 125.98ns 13.18ns 53.76ns 5152 +SGb_treesD 256 514.36ns 63.00ns 117.81ns 12.70ns 57.49ns 10272 +SGb_treesD 516 528.76ns 58.07ns 125.12ns 41.24ns 79.65ns 20672 +SGb_treesD 1024 640.81ns 60.32ns 158.70ns 23.07ns 64.59ns 40992 +SGb_treesD 2048 727.13ns 60.68ns 141.84ns 29.51ns 70.19ns 81952 +SGb_treesD 4096 806.84ns 63.67ns 145.88ns 13.27ns 103.56ns 163872 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SSetsDs 8 393.74ns 85.67ns notSupport 56.49ns 321.09ns 504 +SSetsDs 16 281.31ns 76.27ns notSupport 31.20ns 252.72ns 632 +SSetsDs 32 253.70ns 74.03ns notSupport 20.01ns 188.58ns 888 +SSetsDs 64 214.41ns 74.67ns notSupport 16.77ns 181.68ns 1400 +SSetsDs 128 231.77ns 84.16ns notSupport 14.24ns 267.05ns 2568 +SSetsDs 256 286.15ns 79.78ns notSupport 13.43ns 272.14ns 4904 +SSetsDs 516 343.54ns 74.99ns notSupport 13.41ns 272.29ns 9640 +SSetsDs 1024 314.23ns 74.81ns notSupport 12.88ns 279.45ns 18920 +SSetsDs 2048 352.26ns 79.73ns notSupport 12.20ns 301.65ns 37608 +SSetsDs 4096 383.00ns 83.49ns notSupport 12.09ns 319.93ns 74984 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SGb_setsDs 8 242.51ns 35.94ns notSupport 36.89ns 57.39ns 288 +SGb_setsDs 16 261.44ns 28.56ns notSupport 25.24ns 40.80ns 544 +SGb_setsDs 32 355.53ns 34.42ns notSupport 19.84ns 76.98ns 1056 +SGb_setsDs 64 450.91ns 49.35ns notSupport 17.28ns 61.86ns 2080 +SGb_setsDs 128 517.83ns 54.74ns notSupport 16.09ns 71.94ns 4128 +SGb_setsDs 256 576.78ns 56.76ns notSupport 14.96ns 61.76ns 8224 +SGb_setsDs 516 580.58ns 58.96ns notSupport 14.20ns 57.82ns 16544 +SGb_setsDs 1024 674.71ns 58.60ns notSupport 14.29ns 64.39ns 32800 +SGb_setsDs 2048 756.15ns 61.41ns notSupport 23.88ns 76.26ns 65568 +SGb_setsDs 4096 817.23ns 63.75ns notSupport 13.50ns 69.41ns 131104 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SOrddictDs 8 31.75ns 38.48ns 58.54ns 32.70ns 49.98ns 328 +SOrddictDs 16 24.97ns 50.63ns 208.51ns 21.38ns 129.39ns 648 +SOrddictDs 32 20.79ns 87.60ns 250.23ns 18.31ns 174.71ns 1288 +SOrddictDs 64 38.35ns 156.47ns 404.38ns 15.60ns 316.40ns 2568 +SOrddictDs 128 49.51ns 327.63ns 582.88ns 14.00ns 514.27ns 5128 +SOrddictDs 256 82.46ns 608.43ns 974.28ns 12.92ns 879.01ns 10248 +SOrddictDs 516 82.69ns 1123.62ns 1939.18ns 12.36ns 1698.00ns 20648 +SOrddictDs 1024 56.43ns 2159.33ns 3586.33ns 12.03ns 3534.09ns 40968 +SOrddictDs 2048 49.15ns 4319.18ns 7393.47ns 12.18ns 7444.38ns 81928 +SOrddictDs 4096 59.69ns 8571.96ns 15119.75ns 12.28ns 14509.69ns 163848 + +DsName V_Num insert/per read/per update/per for/per delete/per termSize +===================================================================================== +SOrdsetsDs 8 27.07ns 35.81ns notSupport 40.24ns 49.45ns 136 +SOrdsetsDs 16 21.24ns 47.23ns notSupport 24.03ns 139.30ns 264 +SOrdsetsDs 32 16.95ns 76.77ns notSupport 16.35ns 265.48ns 520 +SOrdsetsDs 64 14.66ns 137.42ns notSupport 12.04ns 330.05ns 1032 +SOrdsetsDs 128 21.88ns 267.31ns notSupport 9.78ns 560.25ns 2056 +SOrdsetsDs 256 27.93ns 526.30ns notSupport 8.24ns 893.81ns 4104 +SOrdsetsDs 516 27.65ns 886.36ns notSupport 7.62ns 1718.89ns 8264 +SOrdsetsDs 1024 38.68ns 1686.27ns notSupport 7.56ns 3339.04ns 16392 +SOrdsetsDs 2048 28.05ns 3726.41ns notSupport 7.27ns 7092.48ns 32776 +SOrdsetsDs 4096 25.71ns 7038.59ns notSupport 7.36ns 14109.32ns 65544 +ok diff --git a/src/measure/DsTestSimple/utSQueueDs.erl b/src/measure/DsTestSimple/utSQueueDs.erl new file mode 100644 index 0000000..e7f7412 --- /dev/null +++ b/src/measure/DsTestSimple/utSQueueDs.erl @@ -0,0 +1,46 @@ +-module(utSQueueDs). +-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, not_support, not_support, not_support, utTermSize:byteSize(NewDsI)}), + exit(normal). + +init(_Num) -> + queue:new(). + +insert(0, Ds) -> + Ds; +insert(Num, Ds) -> + NewDs = queue:in(Num, Ds), + insert(Num - 1, NewDs). + +read(0, Ds) -> + Ds; +read(Num, Ds) -> + {Value, NewDs} = queue:out(Ds), + read(Num - 1, NewDs). + +update(Num, Ds) -> + Ds. + +for(Num, Ds) -> + Ds. + +delete(Num, Ds) -> + Ds. + + diff --git a/src/measure/DsTestSimple/utSTestDs.erl b/src/measure/DsTestSimple/utSTestDs.erl index 333c770..cb6a9cf 100644 --- a/src/measure/DsTestSimple/utSTestDs.erl +++ b/src/measure/DsTestSimple/utSTestDs.erl @@ -10,8 +10,8 @@ }). %-define(V_NUM, [8, 16, 32, 64, 128, 256, 516, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 524288, 1048576]). --define(V_NUM, [8, 16, 32, 64, 128, 256, 516, 1024, 2048, 4096, 8192, 16384]). --define(DsList, [utSPdDs, utSTupleDs, utSListsDs, utSMapsDs, utSEtsSetDs, utSEtsOrdDs, utSArrayDs, utSDictDs, utSGb_treesDs, utSSetsDs, utSGb_setsDs, utSOrddictDs, utSOrdsetsDs]). +-define(V_NUM, [8, 16, 32, 64, 128, 256, 516, 1024, 2048, 4096]). +-define(DsList, [utSPdDs, utSTupleDs, utSListsDs, utSMapsDs, utSQueueDs, utSUtRiroDs, utSUtLifoDs, utSEtsSetDs, utSEtsOrdDs, utSArrayDs, utSDictDs, utSGb_treesDs, utSSetsDs, utSGb_setsDs, utSOrddictDs, utSOrdsetsDs]). %-define(DsList, [utSPdDs, utSTupleDs, utSMapsDs, utSArrayDs, utSEtsSetDs, utSSetsDs]). -define(Cnt, 12). diff --git a/src/measure/DsTestSimple/utSUtLifoDs.erl b/src/measure/DsTestSimple/utSUtLifoDs.erl new file mode 100644 index 0000000..73cb199 --- /dev/null +++ b/src/measure/DsTestSimple/utSUtLifoDs.erl @@ -0,0 +1,51 @@ +-module(utSUtLifoDs). +-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, not_support, not_support, not_support, ets:info(test_lifo, memory)}), + exit(normal). + +init(_Num) -> + case utLifo:new(test_lifo) of + name_used -> + utLifo:clear(test_lifo); + _ -> + ok + end. + +insert(0, Ds) -> + Ds; +insert(Num, _Ds) -> + NewDs = utLifo:in(test_lifo, Num), + insert(Num - 1, NewDs). + +read(0, Ds) -> + Ds; +read(Num, Ds) -> + Value = utLifo:out(test_lifo), + read(Num - 1, Ds). + +update(Num, Ds) -> + Ds. + +for(Num, Ds) -> + Ds. + +delete(Num, Ds) -> + Ds. + + diff --git a/src/measure/DsTestSimple/utSUtRiroDs.erl b/src/measure/DsTestSimple/utSUtRiroDs.erl new file mode 100644 index 0000000..a5f7e2c --- /dev/null +++ b/src/measure/DsTestSimple/utSUtRiroDs.erl @@ -0,0 +1,51 @@ +-module(utSUtRiroDs). +-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, not_support, not_support, not_support, ets:info(test_riro, memory)}), + exit(normal). + +init(_Num) -> + case utRiro:new(test_riro) of + name_used -> + utRiro:clear(test_riro); + _ -> + ok + end. + +insert(0, Ds) -> + Ds; +insert(Num, _Ds) -> + NewDs = utRiro:in(test_riro, Num), + insert(Num - 1, NewDs). + +read(0, Ds) -> + Ds; +read(Num, Ds) -> + Value = utRiro:out(test_riro), + read(Num - 1, Ds). + +update(Num, Ds) -> + Ds. + +for(Num, Ds) -> + Ds. + +delete(Num, Ds) -> + Ds. + +