Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的函数clock()_C_Unix_System Calls_Time.h - Fatal编程技术网

C语言中的函数clock()

C语言中的函数clock(),c,unix,system-calls,time.h,C,Unix,System Calls,Time.h,在研究time.h中的clock()函数时,我问自己这样一个问题:制作一个简单的程序,看看它是如何工作的。运行这个程序时,我很惊讶,结果显示为0,而我预期的结果是2。我错在哪里 int main(int argc, char const *argv[]){ int msec = 0; clock_t before = clock(); sleep(2); clock_t difference = clock() - before; msec = difference * 10

在研究time.h中的clock()函数时,我问自己这样一个问题:制作一个简单的程序,看看它是如何工作的。运行这个程序时,我很惊讶,结果显示为0,而我预期的结果是2。我错在哪里

int main(int argc, char const *argv[]){
  int msec = 0;
  clock_t before = clock();
  sleep(2);
  clock_t difference = clock() - before;
  msec = difference * 1000 / CLOCKS_PER_SEC;
  printf("Time taken %d seconds\n",msec/1000);
}

时钟
测量程序使用的处理器时间。程序睡眠时不使用处理器时间。程序的其余部分使用的时间不到一毫秒

要测量“挂钟”或“真实世界”时间,请使用
time
,并使用
difftime
time
返回的类型减去
time
值:

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

int main(int argc, const char *argv[])
{
    time_t before = time(NULL);
    sleep(2);
    double difference = difftime(time(NULL), before);
    printf("The time taken was %g seconds.\n", difference);
}
#包括
#包括
#包括
int main(int argc,const char*argv[]
{
time\u t before=时间(空);
睡眠(2);
双差=difftime(时间(空),之前);
printf(“所用时间为%g秒。\n”,差异);
}

时钟
测量程序使用的处理器时间。程序睡眠时不使用处理器时间。程序的其余部分使用的时间不到一毫秒

要测量“挂钟”或“真实世界”时间,请使用
time
,并使用
difftime
time
返回的类型减去
time
值:

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

int main(int argc, const char *argv[])
{
    time_t before = time(NULL);
    sleep(2);
    double difference = difftime(time(NULL), before);
    printf("The time taken was %g seconds.\n", difference);
}
#包括
#包括
#包括
int main(int argc,const char*argv[]
{
time\u t before=时间(空);
睡眠(2);
双差=difftime(时间(空),之前);
printf(“所用时间为%g秒。\n”,差异);
}

我建议
双毫秒=差*1000.0/秒时钟
并打印一个
double
。From:“如果使用的处理器时间不可用或其值无法表示,函数将返回值(clock_t)-1。”这可能是在两个
clock()
调用中发生的情况,因此您有
-1-(-1)=0
?@WeatherVane此顺序是否优于先除后乘?我在某个地方读到过,如果双倍距离
0..abs(1)
range.@yvw当我使用MS函数
Sleep(2000)
运行时,它报告
1
,但当使用
double
时,它报告
1.999999
。另外,
clock()
的MS实现是不一致的,因为它测量墙时间。@WeatherVane,如您所说。这里的计算顺序有区别吗?我建议
double msec=difference*1000.0/时钟/秒
并打印一个
double
。From:“如果使用的处理器时间不可用或其值无法表示,函数将返回值(clock_t)-1。”这可能是在两个
clock()
调用中发生的情况,因此您有
-1-(-1)=0
?@WeatherVane此顺序是否优于先除后乘?我在某个地方读到过,如果双倍距离
0..abs(1)
range.@yvw当我使用MS函数
Sleep(2000)
运行时,它报告
1
,但当使用
double
时,它报告
1.999999
。另外,
clock()
的MS实现是不一致的,因为它测量墙时间。@WeatherVane,如您所说。这里的计算顺序有区别吗?