/*
*openPilot Log - A FOSS Pilot Logbook Application
*Copyright (C) 2020 Felix Turowsky
*
*This program is free software: you can redistribute it and/or modify
*it under the terms of the GNU General Public License as published by
*the Free Software Foundation, either version 3 of the License, or
*(at your option) any later version.
*
*This program is distributed in the hope that it will be useful,
*but WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*GNU General Public License for more details.
*
*You should have received a copy of the GNU General Public License
*along with this program. If not, see .
*/
#ifndef ATIMER_H
#define ATIMER_H
#include
#include
#include
#include "src/testing/adebug.h"
/*!
* \brief The ATimer class provides an easy to use performance timer.
*
* It automatically stops when going out of scope and prints the elapsed time
* to the console. Intermediate timings can be manually obtained with timeNow().
*
* It can be given a QObject as a parent to time its lifetime or can be used without
* parent in any context.
*/
class ATimer : public QObject
{
Q_OBJECT
public:
ATimer(QObject* parent = nullptr);
~ATimer();
/*!
* \brief timeNow takes an intermediate timing and returns miliseconds elapsed.
*/
long timeNow();
private:
std::chrono::high_resolution_clock::time_point start;
std::chrono::high_resolution_clock::time_point intermediate_point;
std::chrono::high_resolution_clock::time_point stop;
double duration;
};
#endif // ATIMER_H