我如何计算程序运行所需的毫秒数?

时间:2009-10-04 15:24:26

标签: c++ timer

这将显示多少秒:

#include <iostream>
#include <time.h>
using namespace std;
int main(void)
{
    int times,timed;

    times=time(NULL);
    //CODE HERE

    timed=time(NULL);
    times=timed-times;
    cout << "time from start to end" << times;
}

这将显示多少个刻度:

#include <iostream>
#include <time.h>
using namespace std;
int main(void)
{
    int times,timed;

    times=clock();
    //CODE HERE

    timed=clock();
    times=timed-times;
    cout << "ticks from start to end" << times;
}

我如何获得毫秒?

6 个答案:

答案 0 :(得分:13)

请参阅Stack Overflow上的问题“Convert Difference between 2 times into Milliseconds”。

或者使用它:

static double diffclock(clock_t clock1,clock_t clock2)
{
    double diffticks=clock1-clock2;
    double diffms=(diffticks)/(CLOCKS_PER_SEC/1000);
    return diffms;
}

答案 1 :(得分:6)

如果您使用Unix操作系统,如Linux或Mac OS X,您可以转到命令行并使用

time call-program

time命令会计算任何命令行的执行时间,并向您报告。

我不知道是否有类似于Windows的内容,也不知道如何在C / C ++程序中测量毫秒数。

答案 2 :(得分:3)

有一个CLOCKS_PER_SEC宏来帮助您将刻度转换为毫秒。

有特定于O / S的API可以获得高分辨率的计时器。

您可以多次运行您的程序(例如1000次)并使用低分辨率计时器(例如几秒钟)测量它,然后将该总计除以您运行它的次数以获得(更高分辨率)平均时间。

答案 3 :(得分:2)

在Windows中,您可以使用GetTickCount,以毫秒为单位。

答案 4 :(得分:1)

在Win32下,您可以使用QueryPerformanceFrequencyQueryPerformanceCounter访问高分辨率计时器(应该首选IMHO,可能需要回退到GetTickCount)。您可以在MSDN上的社区内容部分找到该示例。

答案 5 :(得分:0)

  

这将显示多少滴答声:

#include <iostream>
#include <time.h>
using namespace std;
int main(void)
{
    int times,timed;

    times=clock();
    //CODE HERE

    timed=clock();
    times=timed-times;
    cout << "ticks from start to end" << times;
}
     

如何获取毫秒?

clock()返回毫秒。编译该代码,它将返回1000。当然,如果您在Linux而非Windows上将#include <windows.h>替换为#include <unistd.h>,并将Sleep(1000)替换为usleep(1000000)

#include <stdio.h>
#include <time.h>
#include <windows.h>

int main()
{
    unsigned long x = clock();
    Sleep(1000);
    printf("Difference: %d", clock() - x);
}
相关问题