From dce7bb581b6ba59b55f8d8e5821bac944312bd16 Mon Sep 17 00:00:00 2001 From: incredibleLeitman Date: Sun, 29 Nov 2020 03:12:50 +0100 Subject: [PATCH] added single timing output -> no need for whole Timing class --- Timing.cpp | 168 ------------------------------------------------ Timing.h | 33 ---------- performance.cpp | 7 +- 3 files changed, 5 insertions(+), 203 deletions(-) delete mode 100644 Timing.cpp delete mode 100644 Timing.h diff --git a/Timing.cpp b/Timing.cpp deleted file mode 100644 index 17e1f15..0000000 --- a/Timing.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include -#include -#include -#include // setw for padleft - -#include "Timing.h" - -Timing* Timing::mInstance = 0; - -/** - * Singleton: Get instance. - */ -Timing* Timing::getInstance() { - if (mInstance == 0) { - mInstance = new Timing(); - } - - return mInstance; -} - -/** - * Start recording time with any name. - */ -void Timing::startRecord(const std::string& name) { - auto start = std::chrono::high_resolution_clock::now(); - - auto it = mRecordings.find(name); - if (it != mRecordings.end()) { - it->second = start; - } - else { - mRecordings.insert(std::pair(name, start)); - } - -} - -/** - * Stop recording time with any name. - */ -void Timing::stopRecord(const std::string& name) { - auto end = std::chrono::high_resolution_clock::now(); - - auto it = mRecordings.find(name); - if (it != mRecordings.end()) { - auto start = it->second; - auto result = end - start; - - mResults.insert(std::pair >(name, result)); - } - -} - -/** - * Print measured results human-readable. - * Set prettyPrint to true to display mm:ss.ms instead of ms. - */ -void Timing::print(const bool prettyPrint) const { - std::cout << "--------------------" << std::endl << "Results: " << std::endl << "--------------------" << std::endl; - auto it = mResults.begin(); - while (it != mResults.end()) { - if (prettyPrint) { - std::cout << it->first << ": " << parseDate((int)it->second.count()) << std::endl; - } - else { - std::cout << it->first << ": " << std::setfill(' ') << std::setw(10) << std::fixed << std::setprecision(4) << it->second.count() << "ms" << std::endl; - } - it++; - } - std::cout << "--------------------" << std::endl; -} - -/** - * Parse date from ms to mm:ss.ms. - */ -std::string Timing::parseDate(const int ms) const { - int minutes = (int)(ms / 1000 / 60); - int seconds = (int)((ms % (1000 * 60)) / 1000); - int milliseconds = (int)(ms % 1000); - - std::ostringstream stringStream; - if (seconds == 60) { - stringStream << minutes + 1 << ":00" << seconds << "."; - } - else { - stringStream << minutes << ":" << (seconds < 10 ? "0" : "") << seconds << "."; - } - - if (milliseconds < 100) { - if (milliseconds < 10) { - stringStream << "00" << milliseconds; - } - else { - stringStream << "0" << milliseconds; - } - } - else { - stringStream << milliseconds; - } - - return stringStream.str(); -} - -/** - * Get results of setup, computation and finalization in form: - * mm:ss.ms;mm:ss.ms;mm.ss.ms - */ -std::string Timing::getResults() const { - std::ostringstream stringStream; - - auto start = mResults.find("setup"); - if (start != mResults.end()) { - stringStream << parseDate((int)start->second.count()) << ";"; - } - - auto computation = mResults.find("computation"); - if (computation != mResults.end()) { - stringStream << parseDate((int)computation->second.count()) << ";"; - } - - auto finalization = mResults.find("finalization"); - if (start != mResults.end()) { - stringStream << parseDate((int)finalization->second.count()); - } - - return stringStream.str(); -} - -/** - * Start recording the setup time. - */ -void Timing::startSetup() { - this->startRecord("setup"); -} - -/** - * Stop recording the setup time. - */ -void Timing::stopSetup() { - this->stopRecord("setup"); -} - -/** - * Start recording the computation time. - */ -void Timing::startComputation() { - this->startRecord("computation"); -} - -/** - * Stop recording the computation time. - */ -void Timing::stopComputation() { - this->stopRecord("computation"); -} - -/** - * Start recording the finalization time. - */ -void Timing::startFinalization() { - this->startRecord("finalization"); -} - -/** - * Stop recording the finalization time. - */ -void Timing::stopFinalization() { - this->stopRecord("finalization"); -} \ No newline at end of file diff --git a/Timing.h b/Timing.h deleted file mode 100644 index aed0d95..0000000 --- a/Timing.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once -#include -#include -#include - -/** - * Measure high precision time intervals (using std::chrono). - * Author: Karl Hofer - */ -class Timing { -public: - static Timing* getInstance(); - - void startSetup(); - void stopSetup(); - void startComputation(); - void stopComputation(); - void startFinalization(); - void stopFinalization(); - - void startRecord(const std::string& name); - void stopRecord(const std::string& name); - void print(const bool prettyPrint = false) const; - std::string getResults() const; - -private: - Timing() {}; - std::map mRecordings; - std::map > mResults; - std::string parseDate(const int ms) const; - - static Timing* mInstance; -}; \ No newline at end of file diff --git a/performance.cpp b/performance.cpp index 9b25bff..f4815ec 100644 --- a/performance.cpp +++ b/performance.cpp @@ -7,8 +7,13 @@ int main() std::list points = NumberGenerator::get_rectangle_numbers(100); std::list hull; + auto start = std::chrono::high_resolution_clock::now(); + Quickhull::get_hull(points, hull); + auto diff = std::chrono::duration(std::chrono::high_resolution_clock::now() - start); + std::cout << "time spent: " << diff.count() << "ms" << std::endl; // shit runs about 120 milliseconds for 1Mio numbers + // create the window sf::RenderWindow window(sf::VideoMode(800, 800), "k-d-tree"); @@ -50,7 +55,5 @@ int main() // end the current frame window.display(); } - - return 0; } \ No newline at end of file