Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_CPP / src / core / tools / cpp / Chronos.cpp
diff --git a/WCudaMSE/BilatTools_CPP/src/core/tools/cpp/Chronos.cpp b/WCudaMSE/BilatTools_CPP/src/core/tools/cpp/Chronos.cpp
new file mode 100755 (executable)
index 0000000..0b94574
--- /dev/null
@@ -0,0 +1,113 @@
+#include <iostream>\r
+#include <omp.h>\r
+#include <stdio.h>\r
+#include <string>\r
+\r
+#include "Chronos.h"\r
+\r
+using std::cout;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Implementation                                  *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Constructor             *|\r
+ \*-------------------------------------*/\r
+\r
+Chronos::Chronos()\r
+    {\r
+    start();\r
+    }\r
+\r
+Chronos::~Chronos()\r
+    {\r
+    // rien\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Methodes                *|\r
+ \*-------------------------------------*/\r
+\r
+void Chronos::start()\r
+    {\r
+   // cout << "Chronos : start" << endl;\r
+\r
+    isRunning = true;\r
+\r
+    deltaTime = -1;\r
+    timeStart = time();\r
+    }\r
+\r
+double Chronos::stop()\r
+    {\r
+    //cout << "Chronos : stop" << endl;\r
+\r
+    isRunning = false;\r
+\r
+    timeStop = time();\r
+    deltaTime = timeStop - timeStart;\r
+\r
+    return deltaTime;\r
+    }\r
+\r
+double Chronos::getDeltaTime() const\r
+    {\r
+    if (isRunning)\r
+       {\r
+       cout << "Chronos : Warning : Stop chrono befor, or use methode timeFlight() instead!" << endl;\r
+       return -1;\r
+       }\r
+    else\r
+       {\r
+       return deltaTime;\r
+       }\r
+    }\r
+\r
+double Chronos::timeFlight() const\r
+    {\r
+    return time() - timeStart;\r
+    }\r
+\r
+void Chronos::print(const string& titre) const\r
+    {\r
+    print(cout, titre);\r
+    }\r
+\r
+void Chronos::print(ostream& stream, const string& titre) const\r
+    {\r
+    double dt;\r
+    if (isRunning)\r
+       {\r
+       dt = timeFlight();\r
+       }\r
+    else\r
+       {\r
+       dt = deltaTime;\r
+       }\r
+    stream << titre << " " << dt << " (s)" << endl;\r
+    }\r
+\r
+double Chronos::time()\r
+    {\r
+   // return time(NULL); //  #include <time.h> time(NULL) est time_t\r
+    // Problem : Sous linux : compte en seconde!\r
+\r
+    return omp_get_wtime(); //#include <omp.h>\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Friend                  *|\r
+ \*-------------------------------------*/\r
+\r
+ostream& operator <<(ostream& stream, const Chronos& chrono) // friend\r
+    {\r
+    chrono.print(stream);\r
+    return stream;\r
+    }\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r