C++ 计算一个巨大的c++;程序

C++ 计算一个巨大的c++;程序,c++,performance,long-running-processes,C++,Performance,Long Running Processes,建议的估算时间的方法是使用clock()函数,然后将cpu周期数除以周期/秒 我的问题是,我试图运行的程序需要很多时间(以小时为单位)。这意味着clock()函数(返回long int)返回一个垃圾值(因为max long int不够大) 有什么建议吗(除了估算内部循环的时间并将其相加之类的) 如果您在Linux/Unix下运行它,您可以说: time my_process 工作顺利 计时器库提供一个计时器类用于测量经过的时间,一个进度计时器类用于报告经过的时间,一个进度显示类用于显示朝向目标

建议的估算时间的方法是使用clock()函数,然后将cpu周期数除以周期/秒

我的问题是,我试图运行的程序需要很多时间(以小时为单位)。这意味着clock()函数(返回long int)返回一个垃圾值(因为max long int不够大)

有什么建议吗(除了估算内部循环的时间并将其相加之类的)


如果您在Linux/Unix下运行它,您可以说:

time my_process
工作顺利

计时器库提供一个计时器类用于测量经过的时间,一个进度计时器类用于报告经过的时间,一个进度显示类用于显示朝向目标的进度指示


如果程序长时间运行,那么亚秒精度可能不是特别重要。在这种情况下,为什么不直接调用
time()

从错误百分比的角度考虑问题。

如果您的程序运行需要数小时(假设4小时…或14400秒),则1/2%的错误为72秒,或略多于一分钟

换言之,要获得1/2%以内的准确答案,只需精确到分钟。假设手持式秒表的计时时间在一秒钟之内,甚至是十分之一秒,那么你的误差将非常小

我的观点是,你只需使用秒计时器或手持式秒表就可以准确地测量你的程序。

gettimeofday()


时间至少是32位,所以它可以存储小时。

如果精度(由诸如queryPerformanceTimer之类的win调用提供)不重要,我会采用GetTimeOfDay方法(由@osgx建议)。

\35;
#include <time.h>
int main()
{

clock_t t1,t2;
t1=clock();
//write your code here

t2=clock();
float runningTime ((float)t2-(float)t1);
//runningTime contains the time
return 0;
int main() { 时钟t1,t2; t1=时钟(); //在这里编写代码 t2=时钟(); 浮动运行时间((浮动)t2-(浮动)t1); //runningTime包含时间 返回0;

}

建议的方法是什么?谁干的?我建议使用探查器来估计运行/进程时间。如果不需要毫秒精度,可以使用time()尝试估计程序部分的运行时间。。如果你使用
time()
它会给你总的运行时间,而不一定是你的程序使用了多少CPU周期。在抢占式系统(如windows或linux)中,线程可以100%运行1秒,抢占并休眠1秒,然后100%运行1秒,时间将被重新分配为3秒。但实际上你的程序只用了2秒的CPU时间。@Noah,没有一个分析器会告诉你在程序的各个部分花费的时间比例。为了做到这一点,通常会有一些使运行程序的挂钟时间更长的方法。因此,如果你想知道等待结果出来需要多长时间,而不是需要时间的概要文件,那么概要文件是没有用的。你的意思是我用这个命令运行进程,它会给我它运行的时间?没错。它会给你一个总运行时间的很好的总结,包括真实(实际)时间以及用户和系统级别的时间。是的,我不想要亚秒精度。。。time()是估计运行时间的好方法。我试图在巨大的图形上比较各种算法的运行时间(++由于机器中发生的其他事情,总是有一定数量的无关噪声。
#include <sys/time.h>

int gettimeofday(struct timeval *tv, NULL);
struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
#include <time.h>
int main()
{

clock_t t1,t2;
t1=clock();
//write your code here

t2=clock();
float runningTime ((float)t2-(float)t1);
//runningTime contains the time
return 0;