很多时候,我们需要计算某段代码的操作所耗费的时间,我们往往会这样写:
第一种情况,精确到毫秒。
clock_t start = null, end = null;
double duration = 0;
start = clock();
// operation statements here
end = clock();
duration = (double) (end - start)/CLOCK_PER_SEC;
第二中情况,精确到秒。
time_t start = null, end = null;
int duration = 0;
start = time(NULL);
// operation statements here
end = time(NULL);
duration = end - start;
为了是这些计时的代码能够在C++工程中重用,我们可以对其进行封装。
利用对象的作用域来计算时间。当然这些类只能用在某些特定的场合。
class TimeCost
{
public:
TimeCost(){ m_cur = time(NULL);
~TimeCost()
{
time_t cur = time(NULL);
prinftf("Time cost is %d s\n",cur - m_cur;
}
private:
time_t m_cur;
}
class TimeCost2
{
public:
TimeCost2(){ m_cur = clock();}
~TimeCost2()
{
clock_t cur = clock();
double cost = (double)(cur - m_cur)/CLOCK_PER_SEC;
printf("Time cost: %f s \n", cost);
}
private:
clock_t m_cur;
}
当然,这两个类的最缺陷就是时间的计算严格的依赖于对象的生存期。