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