C++ 如何在C++;使用sys/times.h

C++ 如何在C++;使用sys/times.h,c++,timer,C++,Timer,我想做如下事情: get t1 run a program get t2 display t2 - t1 基本上我是想知道一个程序用了多少时间。我已经看到了几种解决方案,但我喜欢的是使用了sys/times.h的解决方案,但还没有完全解决。如何做到这一点?如果您使用的是windows,请查看QueryPerformanceCounter和QueryPerformanceFrequency。它们在包含windows后可用。h如果您使用的是windows,请查看QueryPerformanceCo

我想做如下事情:

get t1
run a program
get t2
display t2 - t1

基本上我是想知道一个程序用了多少时间。我已经看到了几种解决方案,但我喜欢的是使用了
sys/times.h
的解决方案,但还没有完全解决。如何做到这一点?

如果您使用的是windows,请查看QueryPerformanceCounter和QueryPerformanceFrequency。它们在包含windows后可用。h

如果您使用的是windows,请查看QueryPerformanceCounter和QueryPerformanceFrequency。它们在包含windows之后就可以使用了。h

您也可以使用,这是跨平台的(我不知道这对您是否重要)。
struct timeval timeStart,timeEnd;
int error1=gettimeofday(&timeStart, NULL);
//stuff you want to measure goes here
int error2=gettimeofday(&timeEnd, NULL);
if(error1 || error2) return -1; //some error occured

//this gives the result in microseconds.
return (timeEnd.tv_sec - timeStart.tv_sec)*1000000.0+(timeEnd.tv_usec - timeStart.tv_usec); 
这很简单:您可以使用clock()函数,它返回一个整数。有一个名为CLOCKS_PER_SEC的宏,告诉您当前机器在1秒内将有多少时钟脉冲。在C代码中,这将是:

#include <time.h>

unsigned old_clock = clock();
unsigned current_clock = 0;//will be assigned later
//do anything you want to time
current_clock = clock();
printf("%d seconds (%d milliseconds) ellapsed.\n", (current_clock - old_clock) / CLOCKS_PER_SEC, (current_clock - old_clock) / (CLOCKS_PER_SEC / 1000) );
#包括
无符号旧时钟=时钟();
无符号当前时钟=0//将在稍后分配
//你想做什么就做什么
当前时钟=时钟();
printf(“%d秒(%d毫秒)已暂停。\n”,(当前时钟-旧时钟)/每秒时钟数,(当前时钟-旧时钟)/(每秒时钟数/1000));

您也可以使用,这是跨平台的(我不知道这对您是否重要)。 这很简单:您可以使用clock()函数,它返回一个整数。有一个名为CLOCKS_PER_SEC的宏,告诉您当前机器在1秒内将有多少时钟脉冲。在C代码中,这将是:

#include <time.h>

unsigned old_clock = clock();
unsigned current_clock = 0;//will be assigned later
//do anything you want to time
current_clock = clock();
printf("%d seconds (%d milliseconds) ellapsed.\n", (current_clock - old_clock) / CLOCKS_PER_SEC, (current_clock - old_clock) / (CLOCKS_PER_SEC / 1000) );
#包括
无符号旧时钟=时钟();
无符号当前时钟=0//将在稍后分配
//你想做什么就做什么
当前时钟=时钟();
printf(“%d秒(%d毫秒)已暂停。\n”,(当前时钟-旧时钟)/每秒时钟数,(当前时钟-旧时钟)/(每秒时钟数/1000));
试试这个

#include <iostream>
#include <sys/times.h>
int main()
{
    time_t clkTimeBegin, clkTimeEnd;
    time(&clkTimeBegin);
    std::cout<<"Run your program here"<<std::endl;
    time(&clkTimeEnd);
    std::cout << "Time diff, " << difftime(clkTimeBegin, clkTimeEnd ) << "!\n"; 
}
#包括
#包括
int main()
{
时间\u t时钟时间开始,时钟时间结束;
时间(&clktimebeagin);
std::cout试试这个

#include <iostream>
#include <sys/times.h>
int main()
{
    time_t clkTimeBegin, clkTimeEnd;
    time(&clkTimeBegin);
    std::cout<<"Run your program here"<<std::endl;
    time(&clkTimeEnd);
    std::cout << "Time diff, " << difftime(clkTimeBegin, clkTimeEnd ) << "!\n"; 
}
#包括
#包括
int main()
{
时间\u t时钟时间开始,时钟时间结束;
时间(&clktimebeagin);

std::coutIf如果您使用的是Linux或任何其他Unix版本,
time
命令可以满足您的需要:
time程序args…
它是命令行程序吗?Linux?@wallyk这正是我的想法。我知道time命令。实际上我正在尝试做一些更复杂的事情。我需要使用
sys/times.h
。如果您使用的是Linux或任何其他Unix版本,
time
命令可以满足您的需要:
time程序args…
它是命令行程序吗?Linux?@wallyk这正是我的想法。我知道time命令。实际上我正在尝试做一些更复杂的事情。我需要使用
sys/times、 h
。为什么投票反对?问题不是说linux或windows…因为有linux解决方案…我提供了windows解决方案的基础…为什么投票反对?问题不是说linux或windows…因为有linux解决方案…我提供了windows解决方案的基础。。。