From 33657de56a355b86a47e501ec7782c588173bcdc Mon Sep 17 00:00:00 2001 From: Joshua Moerman Date: Fri, 10 Jul 2015 10:14:59 +0200 Subject: [PATCH] Changes to unordered_map instead of map (1.5x speedup in reading) --- lib/read_mealy.cpp | 6 +++--- lib/read_mealy.hpp | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/read_mealy.cpp b/lib/read_mealy.cpp index a5221dd..f4cc1c4 100644 --- a/lib/read_mealy.cpp +++ b/lib/read_mealy.cpp @@ -66,7 +66,7 @@ mealy read_mealy_from_txt(const std::string & filename) { mealy read_mealy_from_dot(std::istream & in, translation & t){ mealy m; - std::map state_indices; + std::unordered_map state_indices; state max_state = 0; string line; @@ -142,7 +142,7 @@ std::pair read_mealy_from_dot(const string & filename){ template -std::vector create_reverse_map_impl(std::map const & indices) { +std::vector create_reverse_map_impl(std::unordered_map const & indices) { std::vector ret(indices.size()); for (auto && p : indices) { ret[p.second] = p.first; @@ -150,7 +150,7 @@ std::vector create_reverse_map_impl(std::map const return ret; } -std::vector create_reverse_map(const std::map & indices) { +std::vector create_reverse_map(const std::unordered_map & indices) { return create_reverse_map_impl(indices); } diff --git a/lib/read_mealy.hpp b/lib/read_mealy.hpp index 845311a..a172582 100644 --- a/lib/read_mealy.hpp +++ b/lib/read_mealy.hpp @@ -3,7 +3,8 @@ #include "types.hpp" #include -#include +#include +#include #include struct mealy; @@ -27,16 +28,16 @@ std::pair read_mealy_from_dot(std::string const & filename); /// \brief For non-integral formats we use a translation to integers struct translation { - std::map input_indices; + std::unordered_map input_indices; input max_input = 0; - std::map output_indices; + std::unordered_map output_indices; output max_output = 0; }; /// \brief inverts the input_indices and output_indices maps -std::vector create_reverse_map(std::map const & indices); -std::vector create_reverse_map(std::map const & indices); +std::vector create_reverse_map(std::unordered_map const & indices); +std::vector create_reverse_map(std::unordered_map const & indices); /// \brief defines trivial translation (the string represent integers directly) translation create_translation_for_mealy(mealy const & m);