mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-23 05:25:26 +00:00
Small Timer helper class useful for performance investigation in src/.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36940 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
2ab1601311
commit
065483dae3
@ -17,6 +17,10 @@
|
||||
#include <QObject>
|
||||
#include <QTimerEvent>
|
||||
|
||||
#include <ctime>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace lyx {
|
||||
@ -142,4 +146,83 @@ Timeout & Timeout::setTimeout(unsigned int msec)
|
||||
}
|
||||
|
||||
|
||||
struct Timer::Private
|
||||
{
|
||||
time_t start_time;
|
||||
};
|
||||
|
||||
|
||||
Timer::Timer() : d(new Private)
|
||||
{
|
||||
restart();
|
||||
}
|
||||
|
||||
|
||||
void Timer::restart()
|
||||
{
|
||||
time(&d->start_time);
|
||||
}
|
||||
|
||||
|
||||
int Timer::elapsed() const
|
||||
{
|
||||
time_t end_time;
|
||||
time(&end_time);
|
||||
double diff = difftime(end_time, d->start_time);
|
||||
return int(diff);
|
||||
}
|
||||
|
||||
|
||||
string Timer::timeStr(char separator) const
|
||||
{
|
||||
tm * timeinfo = localtime(&d->start_time);
|
||||
// With less flexibility we could also use:
|
||||
//strftime(buffer, 10, "%X", timeinfo);
|
||||
ostringstream out;
|
||||
out << setw(2) << setfill('0');
|
||||
if (separator) {
|
||||
out << separator << setw(2) << setfill('0') << timeinfo->tm_hour
|
||||
<< separator << setw(2) << setfill('0') << timeinfo->tm_min
|
||||
<< separator << setw(2) << setfill('0') << timeinfo->tm_sec;
|
||||
} else {
|
||||
out << setw(2) << setfill('0') << timeinfo->tm_hour
|
||||
<< setw(2) << setfill('0') << timeinfo->tm_min
|
||||
<< setw(2) << setfill('0') << timeinfo->tm_sec;
|
||||
}
|
||||
return out.str();
|
||||
}
|
||||
|
||||
|
||||
string Timer::dateStr(char separator) const
|
||||
{
|
||||
tm * timeinfo = localtime(&d->start_time);
|
||||
// With less flexibility we could also use:
|
||||
//res = strftime(buffer, 10, "%d%m%y", timeinfo);
|
||||
ostringstream out;
|
||||
out << setw(2) << setfill('0') << timeinfo->tm_mday;
|
||||
if (separator)
|
||||
out << separator;
|
||||
out << setw(2) << setfill('0') << timeinfo->tm_mon;
|
||||
if (separator)
|
||||
out << separator;
|
||||
out << setw(2) << setfill('0') << timeinfo->tm_year - 100;
|
||||
return out.str();
|
||||
}
|
||||
|
||||
|
||||
string Timer::toStr() const
|
||||
{
|
||||
tm * timeinfo = localtime(&d->start_time);
|
||||
return asctime(timeinfo);
|
||||
}
|
||||
|
||||
|
||||
string Timer::currentToStr()
|
||||
{
|
||||
time_t current_time;
|
||||
time(¤t_time);
|
||||
tm * timeinfo = localtime(¤t_time);
|
||||
return asctime(timeinfo);
|
||||
}
|
||||
|
||||
} // namespace lyx
|
||||
|
@ -64,6 +64,27 @@ private:
|
||||
unsigned int timeout_ms;
|
||||
};
|
||||
|
||||
// Small Timer class useful for debugging and performance investigation.
|
||||
class Timer
|
||||
{
|
||||
public:
|
||||
Timer();
|
||||
///
|
||||
void restart();
|
||||
///
|
||||
int elapsed() const;
|
||||
///
|
||||
std::string dateStr(char separator = 0) const;
|
||||
///
|
||||
std::string timeStr(char separator = 0) const;
|
||||
///
|
||||
std::string toStr() const;
|
||||
///
|
||||
static std::string currentToStr();
|
||||
private:
|
||||
struct Private;
|
||||
Private * d;
|
||||
};
|
||||
|
||||
} // namespace lyx
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user