关于用clock() 测评算法所用时间长短的使用

---恢复内容开始---

  C语言本身提供了测评程序所用时间的方法。这需要用到一类关于clock的函数。

  clock函数包含于<time.h>头文件.使用的是被称为时间点数的计数法,即单位时间内增加一些计数.我们需要用专有的变量来存储这类值.clock_t便是申请这类数据类型的函数.在我们关心的地方使用clock()来设置一个点并用专有变量保存计数点,在我们关心内容结束的地方设置保存一个计数点.然后我们使用这些(末尾-开始)计数点就得到了之间的计数点,可以进行比较了,但这并不是时间,我们还需要将计数点除以打点系数(CLK_TCK);最后计算时间的公式变成(末尾计数-开始计数)/CLK_TCK.然后得到的结果会是个小数,所以我们要用double类型来存储,或者直接在printf中使用也是可以的.

  但很有可能存在一个问题,就是计算机处理速度惊人得快,很多时候得到的运行时间是0(ms),这种情况,我们应该设置一个for循环,将我们关心得内容循环N次。

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

int gcd(int a,int b)//要测评的算法
{
    return b?gcd(b,a%b):a;
}

int main()
{
    double time_use;
    clock_t star,stop;//申请类型保存计数点
    int a,b,i;
    scanf("%d %d",&a,&b);
    star=clock();//在关心内容开始的地方设点
    for (i=0;i<10000000;++i)//循环N次,以得到结果
        gcd(a,b);
    stop=clock();//在关系内容结束的地方设点
    time_use=(double)(stop-star)/CLK_TCK;//计算时间(共N次的),最好强制类型转换下
    printf("time=%lf\n",time_use);
    return 0;

}

---恢复内容结束---

时间: 2024-08-09 10:44:55

关于用clock() 测评算法所用时间长短的使用的相关文章

算法(1)--时间和空间复杂度

算法(1)--时间和空间复杂度 初识 算法定义 算法是独立存在的一种解决问题的方法和思想: 求解一个问题步骤的描述 是求解问题的方法 它是指令的有限序列 其中每条指令表示一个或者多个操作 对于算法而言,实现的语言并不重要,重要的是思想 算法特性 确定性:无二义 有穷性:合适时间内可以执行 输入项 输出项 可行性:算法的每一步都是可行的 复杂度 时间复杂度 定义 ? 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示(语句频度),若有某个辅助函数f(n),使得当n趋近于

开发项目和所用时间 感想

开发项目和所用时间: 我通过上课的时间,利用了这段时间按照老师的要求编写加减乘除的程序,因所学的不是很好,所以里面有一些小的错误. 感想:通过这次上课所学的东西,我了解了自己在这个课程中的好多不足,以及自己在学习中的错误方法,知道了自己在以后的学习中应该更改自己的学习方法,让自己对这个课程更加了解认识,这次的作业虽然有很多小的错误,但是我们通过交流很快的解决了这些任务,顺利的完成了这项作业,让我懂得了自己与组员密不可分,应该时常交流,弥补自己的不足,自己不仅应该在日常的生活中阅读一些关于这个课程

linux计算程序所用时间

######################################################################### # File Name: testTime.sh # Author: fangtest # mail: [email protected]126.com # Created Time: Sun 29 Jun 2014 06:42:36 PM EDT ###################################################

算法的时间、空间复杂度详解

一.算法 1.算法是对待定问题求解步骤的一种描述 2.衡量算法的指标: 时间复杂度:执行这个算法需要消耗多少时间,即算法计算执行的基本操作次数 空间复杂度:这个算法需要消耗多少空间,即算法在运行过程中临时占用存储空间大小的度量,强调的是辅助空间的大小(对数据进行操作的工作单元和存储一些计算的辅助单元),而不是指所有数据所占用的空间 3.同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程序的效率.算法分析的目的在于为特定的问题选择合适的算法.一个算法的评价主要从时间复杂度和空间复杂

计算一个算法所用的时间

#include<time.h>clock_t begin,stop;//开始记录时间 begin=clock();//你要测试时间的程序 算法程序(); stop=clock();//获得测试程序运行的时间printf("%ld",(stop-begin/CLOCKS_PER_SEC));//按照s,秒为单位输出时间

hiho一下 第四十八周 拓扑排序&#183;二【拓扑排序的应用 + 静态数组 + 拓扑排序算法的时间优化】

题目1 : 拓扑排序·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了其中.从大家各自了解的情况中,小Hi和小Ho整理得到了以下的信息: 校园网主干是由N个节点(编号1..N)组成,这些节点之间有一些单向的网路连接.若存在一条网路连接(u,v)链接了节点u和节点v,则节点u可以向节点v发送信息,但是节点v不能通过该链接向节点u发送信息. 在刚

算法的时间和空间复杂度

算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量. 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述. 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述. 因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况.然

各种方式输入字符串时间长短比较

测试代码: #include<bits/stdc++.h> using namespace std; const int N=1e8+50; char a[N]; inline void solve1() { gets(a); } inline void solve2() { scanf("%s",&a); } inline void solve3() { char ch; while(ch!='\n') ch=getchar(); } inline void so

四种排序算法的时间比较

#include<iostream> #include<time.h> using namespace std; template<class T> inline void Swap(T& a, T& b); template<class T> void BubbleSort(T a[], int n); template<class T> void InsertionSort(T a[], int n); template<