From b38d845c3ab9c04c88bb3d9a8586fb4b422f6e3a Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Mon, 10 Dec 2018 12:01:11 +0000 Subject: [PATCH] Update src/leveled_pmem.erl Simple change to check for presence of objetc in list before adding it: ```Head check took 124416 microseconds checking list of length 5000 Head check took 130114 microseconds checking list of length 5000 Check for presence of repeated objects Head check took 1725 microseconds checking list of length 5``` --- src/leveled_pmem.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/leveled_pmem.erl b/src/leveled_pmem.erl index 171021f..3bb8cd8 100644 --- a/src/leveled_pmem.erl +++ b/src/leveled_pmem.erl @@ -200,7 +200,12 @@ merge_trees(StartKey, EndKey, TreeList, LevelMinus1) -> find_pos(<<>>, _Hash, PosList, _SlotID) -> PosList; find_pos(<<1:1/integer, Hash:23/integer, T/binary>>, Hash, PosList, SlotID) -> - find_pos(T, Hash, PosList ++ [SlotID], SlotID); + case lists:member(SlotID, PosList) of + true -> + find_pos(T, Hash, PosList, SlotID); + false -> + find_pos(T, Hash, PosList ++ [SlotID], SlotID) + end; find_pos(<<1:1/integer, _Miss:23/integer, T/binary>>, Hash, PosList, SlotID) -> find_pos(T, Hash, PosList, SlotID); find_pos(<<0:1/integer, NxtSlot:7/integer, T/binary>>, Hash, PosList, _SlotID) ->