c语言计算程序运行时间(c语言程序设计期末考试题)-学知识-

c语言计算程序运行时间(c语言程序设计期末考试题)

牵着乌龟去散步 学知识 1 0

大家好,今天来为大家分享c语言计算程序运行时间的一些知识点,和c语言程序设计期末考试题的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

本文目录

  1. 怎样用c语言设计计算程序执行的时间
  2. C语言求一个程序运行时间
  3. C语言中怎样测试函数执行时间
  4. c语言 时间函数
  5. c语言运行一条指令要多少时间
  6. C语言数据结构中的算法分析里的运行时间的问题

一、怎样用c语言设计计算程序执行的时间

1、C语言中的头文件time.h中定义了库函数clock(),它返回的是从程序运行开始算起的时间,一时钟周期为单位,time.h还定义了符号:CLOCKS_PER_SEC,即一秒钟的时钟周期。这样就简单了,在头文件中加入#include<time.h>,在程序main()主函数的开头定义long now=0;并给把clock()赋值给now,即now=clock();记录程序开始时的时间,clock()会继续增加,但now已经确定为开始那一时刻clock()的值,在程序结尾,算式clock()-now就是程序执行所需的时间,但是是以时钟周期为单位的,如果想得到以秒为单位的时间只要输出(clock()-now)/CLOCKS_PER_SEC就是了,即在程序结尾添加

2、printf("%lf",(clock()-now)/CLOCKS_PER_SEC);就可以了。

二、C语言求一个程序运行时间

1、 if((n<1)||(m<1))return 0;

2、 printf("the first clock=%d\n", tb=clock());//打印输出进程运行到此时的挂钟数(近似进程开始)

3、 printf("the last clock=%d\n", te=clock());//打印输出进程运行到此时(快结束而未结束)的挂钟数

4、 printf("%f秒\n",(float)(te-tb)/CLK_TCK);//把挂钟数转换成时间输出

5、【说明】clock_t clock();函数返回从“开启这个程序进程”到“程序中调用clock()”时之间的cpu时钟计数单元(clock tick)【这个句话请仔细体会】;另外,clock_t实为长整型

6、【错误】在你的代码中,最后一个语句:printf("%lf毫秒",(tb-te)/CLK_TCK);有误,不是 tb-be,是 te-tb

7、【补充】有趣的是,系统计时包括 scanf()语句等待输入时间,所以你输入快一些或慢一些直接影响到你的第二次周用clock()函数: te= clock();,所以 te这个值取决于你的输入快慢(scanf());如果你把之一个 printf()语句放到 scanf()语句后面去,则你得到的结果将会是0,因为后面两行代码运行太--快--了,就是楼上这位仁兄所说“程序太小,电脑秒杀了”,自己去试试,体会一下吧,祝你学习愉快!

三、C语言中怎样测试函数执行时间

有4种 *** 可以达成测算程序运行时间的目的。

它们分别是使用clock, times, gettimeofday, getrusage来实现的。

下面就来逐一介绍,并比较它们的优劣点。

只要修改第11行的定义值,就可以使用不同的测量 *** 了。

#include<sys/resource.h>

#define TEST_BY_CLOCK(char)(0x00)

#define TEST_BY_TIMES(char)(0x01)

#define TEST_BY_GETTIMEOFDAY(char)(0x02)

#define TEST_BY_GETRUSAGE(char)(0x03)

#define TEST_METHOD(TEST_BY_GETTIMEOFDAY)

#define COORDINATION_X(int)(1024)

#define COORDINATION_Y(int)(1024)

static int g_Matrix[COORDINATION_X][COORDINATION_Y];

if(TEST_METHOD== TEST_BY_GETTIMEOFDAY)

gettimeofday(&stTimeval, NULL);

else if(TEST_METHOD== TEST_BY_GETRUSAGE)

getrusage(RUSAGE_SELF,&stRusage);

stTimeval= stRusage.ru_utime;

return stTimeval.tv_sec+(double)stTimeval.tv_usec*1E-6;

if(TEST_METHOD== TEST_BY_CLOCK)

else if(TEST_METHOD== TEST_BY_TIMES)

else if(TEST_METHOD== TEST_BY_GETTIMEOFDAY)

else if(TEST_METHOD== TEST_BY_GETRUSAGE)

for(i= 0; i< COORDINATION_X; i++)

for(j= 0; j< COORDINATION_Y; j++)

if(TEST_METHOD== TEST_BY_CLOCK)

printf("Time result tested by clock=%10.30f\n",(double)(clockT2- clockT1)/CLOCKS_PER_SEC);

else if(TEST_METHOD== TEST_BY_TIMES)

printf("Time result tested by times=%10.30f\n",(double)(clockT2- clockT1)/sysconf(_SC_CLK_TCK));

else if(TEST_METHOD== TEST_BY_GETTIMEOFDAY)

printf("Time result tested by gettimeofday=%10.30f\n",(double)(doubleT2- doubleT1));

else if(TEST_METHOD== TEST_BY_GETRUSAGE)

printf("Time result tested by getrusage=%10.70f\n",(double)(doubleT2- doubleT1));

clock是ANSI C的标准库函数,关于这个函数需要说明几点。

首先,它返回的是CPU耗费在本程序上的时间。也就是说,途中sleep的话,由于CPU资源被释放,那段时间将不被计算在内。

其次,得到的返回值其实就是耗费在本程序上的CPU时间片的数量,也就是Clock Tick的值。该值必须除以CLOCKS_PER_SEC这个宏值,才

能最后得到ss.mmnn格式的运行时间。在POSIX兼容系统中,CLOCKS_PER_SEC的值为1,000,000的,也就是

最后,使用这个函数能达到的精度大约为10ms。

times的用法基本和clock类似,同样是取得CPU时间片的数量,所不同的是要除以的时间单位值为sysconf(_SC_CLK_TCK)。

用gettimeofday直接提取硬件时钟进行运算,得到的结果的精度相比前两种 *** 提高了很多。

但是也正由于它提取硬件时钟的原因,这个 *** 只能计算程序开始时间和结束时间的差值。而此时系统中如果在运行其他的后台程序,可能会影响到最终结果的值。如果后台繁忙,系统dispatch过多的话,并不能完全真实反映被测量函数的运行时间。

getrusage得到的是程序对系统资源的占用信息。只要指定了RUSAGE_SELF,就可以得到程序本身运行所占用的系统时间。

四、c语言 时间函数

可以通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t* timer);

如果已经声明了参数timer,可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:

这里说的日期和时间就是平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢?

其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为:

struct tm* gmtime(const time_t*timer);

struct tm* localtime(const time_t* timer);

c语言计算程序运行时间(c语言程序设计期末考试题)-第1张图片-

其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么用localtime()函数在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。

五、c语言运行一条指令要多少时间

1.C语言源程序通过预处理然后编译,产生汇编代码,不同的汇编代码和指令有不同的执行时间。

2.一个指令的执行时间,用其所需要的指令周期(执行一条指令所需要的时间)来衡量。对于单字节指令,就是一个读取-执行周期(fetch-execute cycle),对于多字节指令,还需要更多的指令周期。

3.一个指令周期,一般是由若干个机器周期(完成一次基本操作需要的时间,比如获取变量在RAM当中的地址)组成。

4.再一个,时钟周期,这个可以形象一点地和通常所说的主频联系起来,比如CPU核心的主频是2.5GHz,则时钟周期为0.4ns,这个是计算机当中最小的时间计量单位。一个机器周期由若干个时钟周期组成。

六、C语言数据结构中的算法分析里的运行时间的问题

1、线性叠加起来不影响渐进复杂度,就这么简单.

2、大O表示法表示的是算法的渐进复杂度,他的意思是说,表示一个算法的计算量与其接受的数据之间的一个攀升关系.而不是代表绝对的计算量.

3、比如O(n)表示线性渐进,也就是说,当数据量n提升的时候,算法的复杂度会跟着程线性上升.

4、而O(n^2)表示二次渐进,当数据量翻一倍,计算量就变成4倍.

5、所以这里面,常熟系数是没有任何影响的,无论实际上计算量是n还是2n,计算量的上升速度都是线性的,都表示为O(n)

6、由于T1和T2是线性叠加的,所以他们并不影响渐进速度.

7、或者换一种方式,T1(n)+T2(n)= O(2F(n))= O(F(n))因为常数系数没有影响.

关于c语言计算程序运行时间,c语言程序设计期末考试题的介绍到此结束,希望对大家有所帮助。

标签: 语言 考试题 程序设计 期末 运行

上一篇宁夏中级会计考试时间,中级会计每年几月份考试

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!