From: Justin Viiret Date: Thu, 10 Aug 2017 01:06:13 +0000 (+1000) Subject: smallwrite_build: make failure_map unordered X-Git-Tag: v4.6.0^2~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d25740b615332ed32e1ccf2cf81b043b0539c065;p=thirdparty%2Fvectorscan.git smallwrite_build: make failure_map unordered --- 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.