From cff042c0a6f7221825289700bf6d101a2033822d Mon Sep 17 00:00:00 2001 From: Lizzzka007 <gashchuk2011@mail.ru> Date: Tue, 2 May 2023 16:17:39 +0300 Subject: [PATCH] unordered_map --- Event.h | 2 +- Jikan.h | 2 +- JikanDepths.cpp | 27 ++++++++++++++++----------- JikanDepths.cu | 3 ++- JikanDepths.h | 5 +++-- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Event.h b/Event.h index 8a4f7dc..4047f87 100644 --- a/Event.h +++ b/Event.h @@ -2,7 +2,7 @@ #include <string> #include <vector> -#include <map> +// #include <map> #include <chrono> #include "Jikan.h" diff --git a/Jikan.h b/Jikan.h index a509854..2c08594 100644 --- a/Jikan.h +++ b/Jikan.h @@ -2,7 +2,7 @@ //------------------------- Jikan-config --------------------------------------------- #define TIMER_ON -// #define INCLUDE_GPU_TIMER +#define INCLUDE_GPU_TIMER #define INCLUDE_MPI // #define INCLUDE_OPEN_MP // #define SAVE_TIME_SERIES diff --git a/JikanDepths.cpp b/JikanDepths.cpp index c4e5fb1..c08b5e1 100644 --- a/JikanDepths.cpp +++ b/JikanDepths.cpp @@ -3,7 +3,7 @@ #include "ToJSON.h" #include <iostream> -#include <map> +// #include <map> #include <string> #ifdef INCLUDE_OPEN_MP @@ -86,7 +86,7 @@ Jikan::~Jikan() #endif this->Events.clear(); - map<string, set<string> >::iterator it; + unordered_map<string, set<string> >::iterator it; for(it = this->EventType.begin(); it!=this->EventType.end(); ++it) it->second.clear(); @@ -99,7 +99,7 @@ Jikan::~Jikan() bool Jikan::ifContains(const string& Name) { - map<string, EventData>::iterator it; + unordered_map<string, EventData>::iterator it; it = this->Events.find(Name); if (it == this->Events.end()) @@ -287,20 +287,25 @@ void Jikan::GenerateTypedOutputData(const string& EventType, string& EventTypeSt void Jikan::GenerateOutputData() { - map<string, set<string> >::iterator it; - map<string, set<string> >::iterator end_m = this->EventType.end(); - --end_m; + unordered_map<string, set<string> >::iterator it; + unordered_map<string, set<string> >::iterator end_m; // = this->EventType.end(); + // end_m--; string Name; string Out = "{ "; string TypedOutput; - for(it = this->EventType.begin(); it!=end_m; ++it) + for(it = this->EventType.begin(); it!=this->EventType.end(); ++it) { - Name = it->first; - TypedOutput = ""; - this->GenerateTypedOutputData(Name, TypedOutput); - Out += TypedOutput + ",\n"; + if(next(it) != this->EventType.end()) + { + Name = it->first; + TypedOutput = ""; + this->GenerateTypedOutputData(Name, TypedOutput); + Out += TypedOutput + ",\n"; + } + else + end_m = it; } Name = end_m->first; diff --git a/JikanDepths.cu b/JikanDepths.cu index c8f518a..883606a 100644 --- a/JikanDepths.cu +++ b/JikanDepths.cu @@ -41,4 +41,5 @@ void Jikan::CUDAGetTime(const string& name, const int cont_mode_t) (this->Events)[name].ContiniousTime = 0.0; } #endif -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/JikanDepths.h b/JikanDepths.h index d12e259..2a288b7 100644 --- a/JikanDepths.h +++ b/JikanDepths.h @@ -6,6 +6,7 @@ #include <iostream> #include <string> #include <set> +#include <unordered_map> #ifdef INCLUDE_MPI #include <mpi.h> @@ -14,8 +15,8 @@ class Jikan { public: - std::map<std::string, EventData> Events; // Measuring code blocks info: string = code block name ID, EventData = measuring code block data - std::map<std::string, std::set<std::string> > EventType; // Code blocks measurment types: synchronious or ansynchronious + std::unordered_map<std::string, EventData> Events; // Measuring code blocks info: string = code block name ID, EventData = measuring code block data + std::unordered_map<std::string, std::set<std::string> > EventType; // Code blocks measurment types: synchronious or ansynchronious std::string JSONname; // Measurments dump filename std::string JSONdata; // Dump string std::string Error; // Dump error ? -- GitLab