diff options
author | Magnus Ahltorp <map@kth.se> | 2014-10-25 15:22:09 +0200 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2014-10-25 15:22:09 +0200 |
commit | 2483f0cf09ccc4cf73558c7a85bbb51a72d29c3a (patch) | |
tree | d618ac06c64d92b5a350955391d5abd352563878 /src/db.erl | |
parent | 868a029e39ec8e9aa368da917146d088edee4d2f (diff) |
Optimize db:get_by_indices by not fetching entry and implementing index:getrange
Diffstat (limited to 'src/db.erl')
-rw-r--r-- | src/db.erl | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -129,6 +129,9 @@ index_for_leafhash(LeafHash) -> leafhash_for_index(Index) -> index:get(index_path(), Index). +leafhash_for_indices(Start, End) -> + index:getrange(index_path(), Start, End). + leafhash_for_entryhash(EntryHash) -> perm:readfile(entryhash_root_path(), EntryHash). @@ -138,11 +141,10 @@ get_by_indices_helper(Start, End) -> EndBound = min(End, size() - 1), case Start =< EndBound of true -> - lists:map(fun (Index) -> - LeafHash = leafhash_for_index(Index), - Entry = entry_for_leafhash(LeafHash), - {Index, LeafHash, Entry} - end, lists:seq(Start, EndBound)); + lists:map(fun ({LeafHash, Index}) -> + {Index, LeafHash, notfetched} + end, lists:zip(leafhash_for_indices(Start, EndBound), + lists:seq(Start, EndBound))); false -> [] end. |