From 48462723932e2dfbdcc41c2006fd675d701e6da5 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Sat, 21 Jan 2017 01:48:38 +0000 Subject: [PATCH] Build more efficiently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don’t use ++ to build the tree --- src/leveled_tree.erl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/leveled_tree.erl b/src/leveled_tree.erl index 792c05d..6f50c28 100644 --- a/src/leveled_tree.erl +++ b/src/leveled_tree.erl @@ -26,7 +26,7 @@ -include_lib("eunit/include/eunit.hrl"). --define(SKIP_WIDTH, 32). +-define(SKIP_WIDTH, 16). %%%============================================================================ @@ -99,12 +99,12 @@ empty() -> from_orderedlist([], TmpList, _L) -> - gb_trees:from_orddict(TmpList); + gb_trees:from_orddict(lists:reverse(TmpList)); from_orderedlist(OrdList, TmpList, L) -> SubLL = min(?SKIP_WIDTH, L), {Head, Tail} = lists:split(SubLL, OrdList), {LastK, _LastV} = lists:last(Head), - from_orderedlist(Tail, TmpList ++ [{LastK, Head}], L - SubLL). + from_orderedlist(Tail, [{LastK, Head}|TmpList], L - SubLL). lookup_match(_Key, []) -> none; @@ -276,7 +276,7 @@ tree_search_test() -> tree_test() -> - N = 2000, + N = 4000, KL = lists:ukeysort(1, generate_randomkeys(1, N, 1, N div 5)), OS = ets:new(test, [ordered_set, private]),