diff --git a/dependencies/iroha-ed25519 b/dependencies/iroha-ed25519 index eb4c0fce9..7307ffb8a 160000 --- a/dependencies/iroha-ed25519 +++ b/dependencies/iroha-ed25519 @@ -1 +1 @@ -Subproject commit eb4c0fce900e2468b94bb9e9498af626bb66c039 +Subproject commit 7307ffb8a89d2459f0c07ea5cab27c0d3496df00 diff --git a/src/cpp/model/Profiler.cpp b/src/cpp/model/Profiler.cpp new file mode 100644 index 000000000..d3b3255ce --- /dev/null +++ b/src/cpp/model/Profiler.cpp @@ -0,0 +1,64 @@ +#include "Profiler.h" + +#include + +Profiler::Profiler() +{ + reset(); +} + +Profiler::~Profiler() +{ + +} + +double Profiler::millis() const +{ + auto current = std::chrono::high_resolution_clock::now(); + std::chrono::duration fp_ms = current - mStartTick; + return fp_ms.count(); + +} + +double Profiler::micros() const +{ + auto current = std::chrono::high_resolution_clock::now(); + std::chrono::duration fp_micros = current - mStartTick; + return fp_micros.count(); + //auto diff = current - mStartTick; + //return diff.count() / 1000.0; +} + +double Profiler::nanos() const +{ + auto current = std::chrono::high_resolution_clock::now(); + return static_cast((current - mStartTick).count()); +} + +double Profiler::seconds() const +{ + auto current = std::chrono::high_resolution_clock::now(); + std::chrono::duration fp_ms = current - mStartTick; + return fp_ms.count() / 1000.0; +} + +std::string Profiler::string() const +{ + auto current = std::chrono::high_resolution_clock::now(); + auto diff = current - mStartTick; + std::stringstream ss; + ss.precision(3); + + if (diff < std::chrono::microseconds{1}) { + ss << diff.count() << " nano s"; + } else if (diff < std::chrono::milliseconds{ 1 }) { + ss << (double)diff.count() / 1000.0 << " micro s"; + } else if (diff < std::chrono::seconds{ 1 }) { + ss << (double)std::chrono::duration_cast(diff).count() / 1000.0 << " ms"; + } else { + ss << (double)std::chrono::duration_cast(diff).count() / 1000.0 << " s"; + } + + return ss.str(); + +} \ No newline at end of file diff --git a/src/cpp/model/Profiler.h b/src/cpp/model/Profiler.h new file mode 100644 index 000000000..e86a83652 --- /dev/null +++ b/src/cpp/model/Profiler.h @@ -0,0 +1,33 @@ +/*! +* +* \author: einhornimmond +* +* \date: 08.03.19 +* +* \brief: easy to use time profiler +*/ + +#ifndef DR_LUA_WEB_MODULE_CORE_LIB_PROFILER_H +#define DR_LUA_WEB_MODULE_CORE_LIB_PROFILER_H + +#include +#include + +class Profiler +{ +public: + Profiler(); + ~Profiler(); + + inline void reset() { mStartTick = std::chrono::high_resolution_clock::now(); } + double millis() const; + double micros() const; + double nanos() const; + double seconds() const; + std::string string() const; + +protected: + std::chrono::time_point mStartTick; +}; + +#endif //DR_LUA_WEB_MODULE_CORE_LIB_PROFILER_H