CTimer.h
#ifndef CTIMER_H
#define CTIMER_H
#include <QString>
#include <QTime>
class CTimer
{
public:
CTimer(const QString& sInfo);
~CTimer();
void reStart();
void reStart(const QString& sInfo);
void stop();
private:
void start(const QString& sInfo);
void print();
private:
QTime mStartTime;
QTime mEndTime;
QString msInfo;
};
#endif // CTIMER_H
CTime.cpp
#include "CTimer.h"
#include <QDebug>
CTimer::CTimer(const QString& sInfo)
{
start(sInfo);
}
CTimer::~CTimer()
{
stop();
}
void CTimer::reStart()
{
start(msInfo);
}
void CTimer::reStart(const QString& sInfo)
{
start(sInfo);
}
void CTimer::start(const QString& sInfo)
{
msInfo = sInfo;
mStartTime = QTime::currentTime();
}
void CTimer::stop()
{
mEndTime = QTime::currentTime();
print();
}
void CTimer::print()
{
double d_run_time = mStartTime.msecsTo(mEndTime) / 1000.0;
qDebug() << QString("'%1' run time: '%2' s").arg(msInfo).arg(d_run_time);
}
main.cpp
#include <QApplication>
#include <QSet>
#include "CTimer.h"
int main(int argc, char *argv[])
{
CTimer ts_timer("create set");
QSet<int> set;
for (int i = 0; i < 1000; ++i) {
for (int j = 0; j < 1000; ++j) {
for (int k = 0; k < 1000; ++k) {
set << i + j + k;
}
}
}
ts_timer.stop();
ts_timer.reStart("find set");
for (int i = 0; i < 1000; ++i) {
for (int j = 0; j < 1000; ++j) {
for (int k = 0; k < 1000; ++k) {
set.contains(i + j + k);
}
}
}
ts_timer.stop();
return 0;
}
执行结果
‘create set' run time: '46.573' s
'find set' run time: '23.17' s