用clock函数统计代码的执行时间_C语言

  • C/C++中统计某部分代码的执行时间
    • 一、背景描述
    • 二、使用方法
    • 三、注意事项
    • 四、例:比较冒泡和插入排序在数据相对整齐的情况下的排序效率
      • (一)、具体代码
      • (二)、运行结果
    • 五、作者相关
      • 作者简介
      • 联系方式

C/C++中统计某部分代码的执行时间

一、背景描述

在设计程序的过程中,我们有时候想知道采用某种算法面对真实数据时实际需要多长时间,或者该算法难以估算其复杂度。这时候便可以借用C语言的time.h库中的clock函数来对程序执行过程中进行的时间进行统计。

二、使用方法

先定义两个clock_t类型的变量(一个存储开始执行代码时时间,另一个存储结束执行此代码的时间),然后再定义一个double类型的变量用来存放时间差。具体如下:

// 为了使用方便,个人使用了结构体
typedef struct RunTime
{clock_t start;clock_t end;double duration;
}RunTime;
RunTime t;

然后再在需要统计执行时间的代码前后分别为start和end赋值。具体如下:

t.start = clock();test();   // 可能的代码块
t.stop = clock();

最后计算执行这段代码所用的时间。具体如下:

t.duration = ((double)(t.stop - t.start)) / CLOCKS_PER_SEC;

至于最后输出时间就不晒代码了,直接输出结果就好。

三、注意事项

  • 1、使用clock()函数需要包含time.h这个头文件,C++中包含ctime这个头文件。

  • 2、计算出来的时间差为了方便阅读理解可以除以CLOCKS_PER_SEC这个常量化为秒。

    • 该常数在time.h文件中的定义如下图:
  • 3、如果计算的结果为0的话可能时计算机执行该段代码很快,小于clock的打点周期,可以将该段代码外部加上循环,让其执行几十万或者其它合适的次数,使其可以充分统计到代码执行时间,最后再除以重复的次数即可。

四、例:比较冒泡和插入排序在数据相对整齐的情况下的排序效率

(一)、具体代码

// 使用clock捕获程序运行时的时间
#include <iostream>
#include <ctime>
#define MAXN 1000000
using namespace std;typedef struct RunTime
{clock_t start;clock_t stop;double duration;
}RunTime;void testOne(void);
void testTwo(void);int main (void)
{RunTime t1, t2;t1.start = clock();for (int i = 0; i < MAXN; i++)testOne();t1.stop = clock();t1.duration = ((double)(t1.stop - t1.start)) / CLOCKS_PER_SEC;t2.start = clock();for (int i = 0; i < MAXN; i++)testTwo();t2.stop = clock();t2.duration = ((double)(t2.stop - t2.start)) / CLOCKS_PER_SEC;cout << t1.duration << endl;cout << t2.duration << endl;return 0;
}// 冒泡排序
void testOne (void)
{int arr[10] = {1, 3, 2, 5, 7, 9, 11, 8, 12, 15};int temp = 0;for (int i = 0; i < 9; i++){for (int j = 0; j < 9 - i; j++){if (arr[j] > arr[j + 1]){temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}// 插入排序
void testTwo (void)
{int arr[10] = {1, 3, 2, 5, 7, 9, 11, 8, 12, 15};int temp = 0;for (int i = 1; i < 10; i++){temp = arr[i];for (int j = i-1; temp < arr[j] && j >= 0; j--){arr[j+1] = arr[j];arr[j] = temp;}}
}

(二)、运行结果


可见后者比前者的用时短,后者的效率相对要高一点。

五、作者相关

  • 作者简介

    • 作者:馗顺先生
    • 简介:一个热爱程序设计与电子技术的预备猿。后续也会不定期更新一些有趣的代码,以及一些有用的算法实现。大家可以关注以下哦。最后,若有不足,希望各位大佬们不吝赐教。
  • 联系方式

    • 邮箱:2727144006@qq.com
    • 博客地址: https://blog.csdn.net/qq_33519837?spm=1001.2100.3001.5113

用clock()统计代码的执行时间(C语言)相关推荐

  1. Java统计代码的执行时间的6种方法

    方法一:System.currentTimeMillis 此方法为 Java 内置的方法,使用 System.currentTimeMillis 来执行统计的时间(统计单位:毫秒)(统计单位:毫秒), ...

  2. R语言统计代码运行耗时实战:计算代码运行时间、使用proc.time函数计算代码运行时间

    R语言统计代码运行耗时实战:计算代码运行时间.使用proc.time函数计算代码运行时间 目录

  3. 6种快速统计代码执行时间的方法,真香!(史上最全)

    我们在日常开发中经常需要测试一些代码的执行时间,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基准测试套件)这么重的测试框架,所以本文就汇总了一些 Jav ...

  4. java sleep方法_6种快速统计代码执行时间的方法,真香!(史上最全)

    我们在日常开发中经常需要测试一些代码的执行时间,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基准测试套件)这么重的测试框架,所以本文就汇总了一些 Jav ...

  5. 统计学习导论之R语言应用(四):分类算法R语言代码实战

    统计学习导论之R语言应用(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learnin ...

  6. 统计学习导论之R语言应用(三):线性回归R语言代码实战

    统计学习导论(ISLR) 参考资料 The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导 ...

  7. 《统计学习导论》R语言代码整理

    <统计学习导论>R语言代码整理 一.特殊函数 二.基本函数 三.画图 一些函数 一些参数 type pch (plotting character) lty(line types) 特定问 ...

  8. C++统计代码执行耗时

    C++统计代码执行耗时 文章目录 C++统计代码执行耗时 1. 需求 2. 代码结构 3. CMakeLists文件 4. 核心代码 5. 使用测试 1. 需求 统计项目中代码执行耗时 2. 代码结构 ...

  9. PTA 基础编程题目集 6-7 统计某类完全平方数 C语言

    PTA 基础编程题目集 6-7 统计某类完全平方数 C语言 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int I ...

最新文章

  1. Servlet学习笔记(七)—— 自己定义过滤器的编写改进:自己定义实现FilterChain...
  2. easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
  3. pandas之Series
  4. android tcp ip modem ppp gprs,为什么GPRS调制解调器提供嵌入式TCP/IP协议栈
  5. 优先队列-二叉堆-堆排序原理-Java相关API
  6. ps-色彩饱和度的设计
  7. MacOS 安装 Matlab R2021b 手记
  8. 【智能路由器】轻量级web服务器lighttpd架设——打造家庭影院
  9. 广电网络计算机上网,广电wifi连接上不能上网怎么办
  10. python做波士顿房价预测
  11. POJ-1392-Ouroboros Snake
  12. codeforces 1526C1 Potions (Easy Version)
  13. [转载]《博客园精华集》WF筛选结果(共39篇)
  14. 乘风破浪的 AI 姐姐,成团首秀献唱 WAIC
  15. P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。
  16. Xcode 8 Instruments 学习
  17. 【百人计划】图形4.1 Bloom算法
  18. WebRTC之P2P
  19. 代码规范+《数学之美》读后感
  20. PEP8规范的中文版

热门文章

  1. linux中通常使用 键来终止命令运行,【单选题】Linux中通常使用( )键来终止命令运行A. Ctrl+c B. Ctrl+d C. Ctrl+k D. Ctrl+f...
  2. 线程并发与进程并发各有什么you_操作系统问答题总结
  3. php报错:找不到php_pdo_oci.dll模块
  4. docker挂载目录原理
  5. python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)
  6. python【力扣LeetCode算法题库】14-最长公共前缀(列表解压)
  7. 桶排序python实现
  8. C++ STL lower_bound,upper_bound的使用总结
  9. c语言程序设计迷宫,C语言程序设计课程设计-迷宫.doc
  10. maven 安装_Maven的下载、安装、配置以及验证操作