diff --git a/include/simdb/apps/AppManager.hpp b/include/simdb/apps/AppManager.hpp index 0cc596fd..0088b8f3 100644 --- a/include/simdb/apps/AppManager.hpp +++ b/include/simdb/apps/AppManager.hpp @@ -5,6 +5,7 @@ #include "simdb/apps/App.hpp" #include "simdb/pipeline/PipelineManager.hpp" #include "simdb/sqlite/DatabaseManager.hpp" +#include "simdb/utils/StreamFormatters.hpp" #include "simdb/utils/ThreadSafeLogger.hpp" #include @@ -765,6 +766,8 @@ class AppManager ~ScopedTimer() { + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); + auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration dur = end - start_; auto us = std::chrono::duration_cast(dur).count(); diff --git a/include/simdb/pipeline/PollingThread.hpp b/include/simdb/pipeline/PollingThread.hpp index 0c906af0..63b036eb 100644 --- a/include/simdb/pipeline/PollingThread.hpp +++ b/include/simdb/pipeline/PollingThread.hpp @@ -4,6 +4,7 @@ #include "simdb/Exceptions.hpp" #include "simdb/pipeline/Runnable.hpp" +#include "simdb/utils/StreamFormatters.hpp" #include #include @@ -200,6 +201,7 @@ class PollingThread runnable->print(std::cout, 4); } + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); std::cout << "\n"; std::cout << " Performance report:\n"; std::cout << " Num times run: " << num_times_run_ << "\n"; diff --git a/include/simdb/utils/StreamFormatters.hpp b/include/simdb/utils/StreamFormatters.hpp new file mode 100644 index 00000000..9fe1378c --- /dev/null +++ b/include/simdb/utils/StreamFormatters.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include + +namespace simdb { + +class ios_format_saver +{ +public: + explicit ios_format_saver(std::ios& s) : + stream_(s) + { + state_.copyfmt(s); + } + + ~ios_format_saver() { stream_.copyfmt(state_); } + +private: + std::ios& stream_; + std::ios state_{nullptr}; +}; + +} // namespace simdb diff --git a/include/simdb/utils/TickTock.hpp b/include/simdb/utils/TickTock.hpp index 379aa34f..3b4b1bf0 100644 --- a/include/simdb/utils/TickTock.hpp +++ b/include/simdb/utils/TickTock.hpp @@ -9,6 +9,8 @@ #include #include +#include "simdb/utils/StreamFormatters.hpp" + namespace simdb::utils { /*! @@ -44,6 +46,7 @@ class SelfProfiler sorted_avg_times.push_back(method_results.second / method_results.first); } + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); std::sort(sorted_avg_times.begin(), sorted_avg_times.end(), std::greater()); for (auto avg_time : sorted_avg_times) {