请问C语言中clock()函数该怎么用?

作者&投稿:濯变 (若有异议请与网页底部的电邮联系)
~

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。

在time.h文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED  

typedef long clock_t;  

#define _CLOCK_T_DEFINED  

#endif  

clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。

clock的返回值一直是0的原因:

1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。

2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。

3、建议使用time gettimeofday函数来计时。

扩展资料:

C语言中clock()函数的程序例1:(TC下运行通过)

#include <stdio.h>

#include <time.h>

int main(void)

{

clock_t start, end;

start = clock();

delay(2000);

end = clock();

printf("The time was: %f
", (double)(end - start) / CLK_TCK);

return 0;

}

说明:CLK_TCK 定义在TC中的time.h中:#define CLK_TCK18.2。

在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。

实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。

参考资料来源:百度百科-clock()




阳新县15112723005: c 语言中clock函数怎么用啊 -
乔琼阿替: /* CLOCK.C:等待3秒,记录程序运行开始时间(start里) 循环600000次做运算[a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));] 记录程序运算结属时间(finish里) 算出这六十万次运行时间. */#include <stdio.h>#include <stdlib.h>#include <time.h>#...

阳新县15112723005: C语言中clock的用法 -
乔琼阿替: clock()返回的是自程序启动以来经过的CPU时间,不是通常意义的时间.

阳新县15112723005: C中clock函数怎么运用
乔琼阿替: 函数名: clock 功 能: 确定处理器时间 用 法: clock_t clock(void); 程序例: #include #include #include int main(void) { clock_t start, end; start = clock(); delay(2000); end = clock(); printf("The time was: %f ", (end - start) / CLK_TCK); return 0; }

阳新县15112723005: 请问C语言中clock()函数该怎么用? -
乔琼阿替: 网上资料错了,clock返回当前进程创建到现在经过的时钟周期数 你的程序那么短,返回0是正常的 我在自己的电脑上试了试,在调用clock()前用了Sleep(1000),结果就不一样了 Sleep()是 Windows API,不要在你的程序里用 而且觉得,随机数钟子只要设一次就够了,不应该每次设, 你这样,在一段时间内(大约1毫秒)都会得到同样的随机数 clock返回的大约是毫秒级(不是处理器周期,你可以查CLOCKS_PER_SEC)

阳新县15112723005: c语言clock怎么用啊 算程序运行时间??谢谢大家了 -
乔琼阿替: #include#include#include void main() { clock_t start, finish;double duration=0;start = clock(); /******************************* **********添加代码************** *******************************/ finish = clock();duration = (double)(finish - start) / CLOCKS_...

阳新县15112723005: C语言clock()函数如何统计输入结束到程序运行结束的时间?本人是菜鸟,C语言刚入门. -
乔琼阿替: clock_t tb,te; tb=clock();//开始计时............te=clock();//结束计时 printf("%lf毫秒",(tb-te)/CLK_TCK);

阳新县15112723005: 编写一个C语言语句,要求输出这个程序需要运行的时间(用clock()做) 该怎么写? -
乔琼阿替: #include <stdio.h>#include <time.h> int main(void) { int i=123456789; clock_t start, end; start = clock(); while(i--); end = clock(); printf("The time was: %d\n", (end - start));//单位是毫秒,注意是%d,不再是%fprintf("The time was: %f\n", (double)(end - start) / CLK_TCK); //单位是秒 return 0; }

阳新县15112723005: C语言的clock()测出来的是什么时间 -
乔琼阿替: clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到实际的秒数. 附linux下clock函数说明: 在单独的窗口中打开图片可以看得更清楚一些,注意红线部分说明:要计算秒数,除以CLOCKS_PER_SEC

阳新县15112723005: C语言的时间函数 -
乔琼阿替: C语言的建时间函数是 mktime(),原型在 <time.h> 里 调用有点繁.下面,用我的程序输入 年月日时分秒,调用mktime(), 就得 C语言 可直接使用的 时间, 存放在 t 里.例如 输入年月日时分秒: 2008 8 16 9 55 25 time_t t; 里 就有了 各...

阳新县15112723005: C语言中 关于时间函数 的使用 谁能教我下?
乔琼阿替: 在c语言中有专门处理系统时间,程序计时等等功能的库, 即time.h 在time.h中函数clock_t clock( void )可以完成计时功能. 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网