微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算c ++中运算之间的时间长度

如何解决计算c ++中运算之间的时间长度

| 该程序是数据库和应用程序之间的中间件。对于每个数据库访问,我最多会计算时间长度(以毫秒为单位)。下面的示例使用Builder库中的TDateTime。我必须尽可能只使用标准c ++库。
AnsiString TimeInMilliseconds(TDateTime t) {
      Word Hour,Min,Sec,MSec;
      DecodeTime(t,Hour,MSec);
      long ms = MSec + Sec * 1000 + Min * 1000 * 60 + Hour * 1000 * 60 * 60;
      return IntToStr(ms);
  }
  // computing times
   TDateTime SelectStart = Now();
   sql_manipulation_statement();
   TDateTime SelectEnd = Now();
    

解决方法

在Windows和POSIX兼容系统(Linux,OSX等)上,您都可以使用
<ctime>
中的
clock()
来计算呼叫的时间,以1 / CLOCKS_PER_SEC(计时器滴答)表示。该调用的返回值将是自程序开始运行以来经过的时间(以毫秒为单位)。然后可以互相减去对
clock()
的两次调用,以计算给定代码块的运行时间。 因此,例如:
#include <ctime>
#include <cstdio>

clock_t time_a = clock();

//...run block of code

clock_t time_b = clock();

if (time_a == ((clock_t)-1) || time_b == ((clock_t)-1))
{
    perror(\"Unable to calculate elapsed time\");
}
else
{
    unsigned int total_time_ticks = (unsigned int)(time_b - time_a);
}
编辑:您将无法直接比较从POSIX兼容平台到Windows平台的时间,因为在Windows
clock()
上测量挂钟时间,而在POSIX系统上,它测量经过的CPU时间。但这是标准C ++库中的函数,用于比较同一平台上不同代码块之间的性能,应该适合您的需求。     ,在Windows上,您可以使用GetTickCount(MSDN),该值将给出自系统启动以来经过的毫秒数。在通话之前和之后使用此功能,您可以获得通话所花费的毫秒数。
DWORD start = GetTickCount();
//Do your stuff
DWORD end = GetTickCount();
cout << \"the call took \" << (end - start) << \" ms\";
编辑: 正如Jason所述,Clock();会更好,因为它不仅与Windows不相关。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。