打印处理程序时经过的总时间

时间:2013-07-19 20:05:00

标签: c++ timezone

我正在尝试写一个秒表,用于跟踪程序的运行时间。显示私人成员的代码如下: -

#include <sys/time.h>

class stopwatch
{
 private:
  struct timeval *startTime;
  int elaspedTime;
  timezone *Tzp;

  public:   
  //some code here 
};

问题是在编译程序时,我收到ISO C++ forbids declaration of 'timezone' with no type的错误。我想这可能是由于我正在使用的库,但我无法纠正我的错误。我在互联网上搜索过,但关于<sys/time.h>的唯一帖子是它现在已经过时了。他们没有提出任何替代方案。你能取悦我吗?

3 个答案:

答案 0 :(得分:4)

您可以使用chrono

#include <chrono>
#include <iostream>

int main(int argc, char* argv[])
{
    auto beg = std::chrono::high_resolution_clock::now();

    // Do stuff here

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - beg).count() << std::endl;

    std::cin.get();
    return 0;
}

答案 1 :(得分:0)

here

#include <iostream>     /* cout */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  struct tm y2k;
  double seconds;

  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;

  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  seconds = difftime(timer,mktime(&y2k));

  std::cout << seconds << "seconds since January 1, 2000 in the current timezone" << endl;

  return 0;
}

您可以根据需要修改名称。此外,here是一个<sys/time.h>

的计时器

答案 2 :(得分:0)

如果您是在Windows环境中进行开发,则可以在程序启动时调用unsigned int startTime = timeGetTime() (msdn),在结束时调用unsigned int endTime = timeGetTime()。从endTime减去startTime,您就拥有自程序启动以来经过的毫秒数。如果您正在寻找更高的准确性,请查看QueryPerformanceCounter函数。