/*++ Copyright (c) 2006 Microsoft Corporation Module Name: timeit.h Abstract: Support for timers. Author: Nikolaj Bjorner (nbjorner) 2006-09-22 Revision History: --*/ #include #include"timeit.h" #include"memory_manager.h" #include"stopwatch.h" #include struct timeit::imp { stopwatch m_watch; char const * m_msg; std::ostream & m_out; double m_start_memory; imp(char const * msg, std::ostream & out): m_msg(msg), m_out(out), m_start_memory(static_cast(memory::get_allocation_size())/static_cast(1024*1024)) { m_watch.start(); } ~imp() { m_watch.stop(); double end_memory = static_cast(memory::get_allocation_size())/static_cast(1024*1024); m_out << m_msg << ", time: " << std::fixed << std::setprecision(2) << m_watch.get_seconds() << " secs, memory: (before " << std::fixed << std::setprecision(2) << m_start_memory << ", after " << std::fixed << std::setprecision(2) << end_memory << ")" << std::endl; } }; timeit::timeit(bool enable, char const * msg, std::ostream & out) { if (enable) m_imp = alloc(imp, msg, out); else m_imp = 0; } timeit::~timeit() { if (m_imp) dealloc(m_imp); }