63 using Clock = std::chrono::high_resolution_clock;
72 mutable Clock::time_point
start_ = Clock::now();
75 mutable Clock::time_point
stop_ = Clock::now();
88 using ms = std::chrono::duration<float, std::chrono::milliseconds::period>;
91 using s = std::chrono::duration<float, std::chrono::seconds::period>;
118 std::cout <<
"Timer " <<
label <<
" was not stopped before being start!" << std::endl;
129 stop_ = Clock::now();
135 std::cout <<
"Timer " <<
label <<
" was not started before being stopped!" << std::endl;
142 template<
typename T = ms>
145 return std::chrono::duration_cast<T>(
duration_).count();
167 std::map<std::string, std::unique_ptr<vmTimer>>
timer;
174 void start(
const std::string& timerLabel);
177 void stop(
const std::string& timerLabel);
183 template<
typename T = vmTimer::s>
186 return (
timer.at(
"Step"))->duration<T>();
232 return (t.second - t.first);
Класс для сбора статистики времени исполнения основных шагов алгоритма и вывода ее в файл
std::vector< std::string > timerLabelList
Список имен счетчиков
void GenerateStatString(size_t stepNo, double curTime, size_t N)
Формирование очередной строки файла временной статистики
void GenerateStatHeader()
Формирование заголовка файла временной статистики
void stop(const std::string &timerLabel)
Останов счетчика
void start(const std::string &timerLabel)
Запуск счетчика
void resetAll()
Сброс всех счетчиков
const WorldGen & W
Константная ссылка на решаемую задачу
double durationStep() const
Вывод счетчика всего шага в секундах
std::map< std::string, std::unique_ptr< vmTimer > > timer
Ассоциативный массив { имя, счетчик }.
static void ToZeroPeriod(timePeriod &period)
static double dT(const timePeriod &t)
virtual void GenerateStatHeader() const =0
Генерация заголовка файла временной статистики
virtual void GenerateStatString() const =0
Сохранение строки со статистикой в файл временной статистики
virtual ~TimesGen()
Деструктор
virtual void ToZero()=0
Обнуление состояния временной статистики
Класс, опеделяющий текущую решаемую задачу
std::chrono::high_resolution_clock Clock
Clock::time_point start_
Отметка последнего включения счетчика
const vmTimer & stop() const
Останов работающего счетчика времени
const std::string label
Имя счетчика времени
std::chrono::duration< float, std::chrono::milliseconds::period > ms
Основная единица измерения времени — миллисекунды
vmTimer(const vmTimer &)=delete
vmTimer(const std::string &timerLabel="")
Конструктор, принимающий на вход имя счетчика
Clock::time_point stop_
Отметка последнего выключения счетчика
std::chrono::duration< float, std::chrono::seconds::period > s
Дополнительная единица измерения времени — секунды
const vmTimer & start() const
Запуск (первый или повторный) счетчика времени
const vmTimer & reset() const
Сброс счетчика времени
vmTimer & operator=(const vmTimer &)=delete
std::chrono::duration< float > duration_
Хранит накопденную от предыдущих запусков продолжительность работы счетчика
bool active
Признак того, что счетчик работает
Описание базовых вспомогательных функций
std::pair< double, double > timePeriod
Тип для хранения начала и конца промежутка времени