`

【算法】代码运行时间的三种测量方法

 
阅读更多
一,返回单位为毫秒

#include<windows.h>
DWORD dwStart = GetTickCount();
// 测试代码

DWORD dwTime = GetTickCount() - dwStart;


注意:GetTickCount()精确度有限,跟CPU有关,一般精确度在16ms左右,最精确也不会精确过10ms,这就是说如果你的时间间隔在16ms以内的话,两个时间相减为0,如果大于16ms且小于32ms的话,两个时间相减为16ms(也不完全严格,有的时候会是15或者17,根据当时CPU的处理情况而定)。其实也就是说你得到的这个差是实际时间间隔除以16(具体是几取决于你机器的处理能力,但是不会小于10),把余数舍弃。


二,返回时间为秒
#include<time.h>
unsigned long start,stop;
start=time(NULL); //取值为秒
//你的程序
stop=time(NULL);
printf("运行时间:%ld",stop-start);

三,精确计时法

QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位
计时.但是 QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必
须 要 查 询 系 统 以 得 到 QueryPerformanceCounter() 返 回 的 嘀 哒 声 的 频
率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.计算确切的时

间是从第一次调用 QueryPerformanceCounter()开始的
使用 window 操作系统本身提供的 API 接口,程序如下:
#include<windows.h>


LARGE_INTEGER Freq; LARGE_INTEGER start; LARGE_INTEGER end;
QueryPerformanceFrequency(&Freq); // 获取时钟周期
QueryPerformanceCounter(&start); // 获取时钟计数


你的程序
QueryPerformanceCounter(&end);
/*此处*1000,以毫秒为单位;*1000000 以微秒为单位*/
/*由于执行时间极短(可能是几微秒),所以采用微秒为单位*/

printf("%d",(end.QuadPart-start.QuadPart)*1000000/Freq.QuadPart);


注意:1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)=10^12ps(皮秒)=10^15fs(飞秒)=10^18as(阿秒)=10^21zm(仄秒)=10^24ym(幺秒)


例子:

分享到:
评论

相关推荐

    C++中计算程序运行时间的三种方式(源码)

    在C++编程中,经常需要评估或比较算法的效率,其中一种常用的方式就是测量程序或特定代码段的执行时间。本文将详细介绍三种常用的计算程序运行时间的方法,并给出相应的源码实现。 #### 方法一:使用`&lt;time.h&gt;`中的...

    dsp运行时间测量方法及操作说明

    测量DSP程序运行时间的方法有多种,本文将详细说明五种常用的测量方法,并提供相关操作说明和例程。 第一种方法是使用Profiler,这是Code Composer Studio(CCS)提供的一个强大的性能分析工具。使用Profiler的方法...

    排序算法与时间复杂度得测量

    这三种排序方法适用于特定类型的数据,如非负整数。它们不是基于比较的排序算法,因此在某些情况下能实现线性时间复杂度O(n)。 为了衡量这些算法的效率,我们通常使用时间复杂度作为评估标准。时间复杂度表示算法...

    记录排序算法运行时间(精确到微秒)和移动步数

    本项目着重于记录并分析排序算法的运行时间以及移动步数,这对于理解算法效率和优化代码性能具有重要意义。 首先,我们要讨论的是排序算法的运行时间。在描述中提到,由于某些排序算法的执行速度非常快,使用`clock...

    改进的无线传感器网络定位算法

    郝丽娜和乔莹提出了一种改进的无线传感器网络定位算法,通过理论分析RSSI算法找出误差产生的原因,并提出了改进后的三边测量法,即质心算法。质心算法的原理是对三边测量法得出的三个交点形成的三角形求其质心,该...

    SolveStepwise(CS中一些重构算法代码,在压缩感知中很有用的一些算法)

    7. **代码实现**:`SolveStepwise.m` 文件很可能包含了上述算法的MATLAB实现,可能包括了变量的选择策略、迭代更新规则以及性能评估函数。理解并调整这些参数可以帮助优化重构性能。 总之,SolveStepwise算法是压缩...

    质心算法代码_传感器_定位算法_质心定位算法_质心_

    在提供的压缩包文件"质心算法代码.xdf"中,很可能包含了实现质心定位算法的源代码。代码可能包括数据读取、信号强度处理、权重计算、质心求解等部分,以及用于展示运行前后的图形和结果分析的函数。通过阅读和理解这...

    西南交通大学算法分析与设计hhy2.1预习实验报告

    - 对于不同的序列长度 \(n\),分别测量排序算法的运行时间。 - 使用 `clock()` 函数获取当前时间点,并在排序前后分别记录,以此计算出排序所需的时间。 3. **数据记录与处理**: - 将运行时间按照要求格式保存到...

    压缩感知代码,可以直接运行,包括两种方法,l1最小范数和OMP算法

    **OMP算法**是另一种有效的压缩感知重构方法,它是基于迭代的思想。在每一步迭代中,OMP算法会选择与残差最相关的基向量,将其添加到当前的稀疏解中,并更新残差。这个过程会一直持续,直到达到预设的迭代次数或者...

    实验指导书1-对算法运行时间的认识.docx

    为了准确测量这些算法的执行时间,实验指导书还预备了相关知识,详细讲解了如何在C语言中使用`clock_t`数据类型、`clock()`函数、`CLOCKS_PER_SEC`常量等工具来测量程序运行时间。这包括记录程序开始运行前的时间,...

    无线传感器网络所有定位算法matlab仿真代码+包含各个算法的论文

    4. 混合型定位算法:结合了以上几种方法,例如,利用RSSI估计粗略距离,再结合TOA或TDOA进行精确计算。 5. 高级算法:可能包括多边定位、卡尔曼滤波、粒子滤波等优化算法,用于提高定位精度和鲁棒性。 三、论文...

    基于MFC的内排序算法时间运行度比较

    - 使用MFC,我们可以创建一个程序来实现这些排序算法,并通过计时器测量每个算法的运行时间。这可以帮助我们直观地比较不同算法在相同数据集上的表现。 7. **Sort子文件夹内容** - 压缩包中的"Sort"子文件夹可能...

    boundler算法 无源代码 方便运行

    在摄影测量和结构从运动(SfM)中,Boundler算法被广泛应用于图像序列的三维重建过程。 Boundler算法的基本思想是,通过最小化重投影误差来估计相机的姿态参数和场景点的三维坐标。重投影误差指的是将三维点投影到...

    【WSN定位】基于chan算法、fang算法、taylor算法和最小二乘定位算法lsm实现目标定位matlab源码.zip

    此外,还可以结合其他定位技术如时间到达(Time of Arrival, TOA)、时间差到达(Time Difference of Arrival, TDOA)或角度测量(Angle of Arrival, AoA)等,实现更精确的三维定位。 总之,本资源提供的MATLAB...

    算法排序实验报告 包括对五种排序算法的算法实现时间的比较

    `clock()`函数用于测量每种排序算法的运行时间,结果以毫秒为单位输出,以便于对比不同算法的效率。作者还创建了一个二维数组`copy[5][Length]`,保存了原始随机数组的五个副本,确保每种排序算法都在相同的数据集上...

    C++编程中计算时间消耗的算法

    在C++编程中,经常需要测量代码执行的时间,以便于评估算法效率、优化程序性能等。本文将详细介绍如何利用C++标准库中的`clock()`函数来计算程序运行时的时间消耗。 #### 1. `clock()`函数简介 `clock()`函数是C++...

    Runtime 代码运行——时间差计算

    在编程领域,了解代码运行时间是非常重要的,尤其是在性能优化阶段。VB,即Visual Basic,是一种广泛使用的编程语言,尤其在Windows环境下。本篇文章将详细探讨如何在VB中进行时间差计算,以评估代码的执行效率。 ...

    指纹定位算法仿真matlab代码

    1. **最近邻(NN,Nearest Neighbor)算法**:这是一种基于距离的分类方法,其基本思想是将待定位点分配到训练集中与其特征向量最接近的样本点对应的区域。在指纹定位中,NN算法会找到与当前测量信号指纹最相似的...

    【WSN定位】基于chan算法实现三维坐标定位问题附matlab代码.zip

    Chan算法是一种适用于WSN的定位算法,尤其在三维空间中的应用具有较高的精度和效率。 在 Chan 算法中,主要涉及到以下几个核心概念: 1. **距离测量**:首先,每个节点需要能够与邻近节点通过无线通信交换信号,并...

    利用线程计算查询和排序算法的时间

    总的来说,这个任务可以帮助我们深入理解线程的并发执行,比较不同算法的性能,并提供了一种实际场景下评估算法效率的方法。在实际开发中,这样的分析对于优化代码、提高程序运行效率具有重要的指导意义。

Global site tag (gtag.js) - Google Analytics