From d25740b615332ed32e1ccf2cf81b043b0539c065 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Thu, 10 Aug 2017 11:06:13 +1000 Subject: [PATCH] smallwrite_build: make failure_map unordered --- src/smallwrite/smallwrite_build.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/smallwrite/smallwrite_build.cpp b/src/smallwrite/smallwrite_build.cpp index c041155b..345edfe9 100644 --- a/src/smallwrite/smallwrite_build.cpp +++ b/src/smallwrite/smallwrite_build.cpp @@ -395,7 +395,7 @@ namespace { */ struct ACVisitor : public boost::default_bfs_visitor { ACVisitor(LitTrie &trie_in, - map &failure_map_in, + unordered_map &failure_map_in, vector &ordering_in) : mutable_trie(trie_in), failure_map(failure_map_in), ordering(ordering_in) {} @@ -445,7 +445,7 @@ struct ACVisitor : public boost::default_bfs_visitor { private: LitTrie &mutable_trie; //!< For setting reports property. - map &failure_map; + unordered_map &failure_map; vector &ordering; //!< BFS ordering for vertices. }; } @@ -471,11 +471,13 @@ bool isSaneTrie(const LitTrie &trie) { */ static void buildAutomaton(LitTrie &trie, - map &failure_map, + unordered_map &failure_map, vector &ordering) { assert(isSaneTrie(trie)); // Find our failure transitions and reports. + failure_map.reserve(num_vertices(trie)); + ordering.reserve(num_vertices(trie)); ACVisitor ac_vis(trie, failure_map, ordering); boost::breadth_first_search(trie, trie.root, visitor(ac_vis)); @@ -672,7 +674,7 @@ unique_ptr buildDfa(LitTrie &trie, bool nocase) { DEBUG_PRINTF("trie has %zu states\n", num_vertices(trie)); vector ordering; - map failure_map; + unordered_map failure_map; buildAutomaton(trie, failure_map, ordering); // Construct DFA states in BFS order.