【C&C++】查看代码运行时间

  查看代码运行时间有助于更好地优化项目代码

1. Windows平台

  windows平台下有两种方式,精度有所不同,都需要包含<windows.h>头文件

1) DWORD GetTickCount(void); 返回毫秒数

  官方文档:(3/28/2014) msdn

For Release configurations, this function returns the number of milliseconds since the device booted, excluding any time that the system was suspended. GetTickCount starts at zero on boot and then counts up from there.

For debug configurations, 180 seconds is subtracted from the the number of milliseconds since the device booted. This enables code that uses GetTickCount to be easily tested for correct overflow handling.

  该函数有几点需要注意:

  a) The elapsed time is stored as a DWORD value. Therefore, the time will rollover to zero if the system is run continuously for 49.7 days

  b) For debug configurations, 180 seconds is subtracted from the the number of milliseconds since the device booted.

  c) On the STMicro platform, the time returned by GetTickCount includes a ~0.014% time drift, which is by design. This translates to a time lag of approximately 1 second    every 2 hours.

  d) 实际使用中,发现该函数相当不精确,对于运行时间只有10毫秒以内的代码段,经常显示0,百度百科中有讲到这个函数并非实时发送,而是由系统每18ms发送一次,因此其最小精度为18ms。当需要有小于18ms的精度计算时,应使用StopWatch或其它方法进行。连续触发200次,实测下来,最小间隔在15ms。实际状况应该是系统每秒触发64次,间隔在15、16ms之间波动。

2)  BOOL WINAPI QueryPerformanceCounter( _Out_ LARGE_INTEGER *lpPerformanceCount); 返回微秒数

  官方文档:msdn

  Retrieves the current value of the performance counter, which is a high resolution (<1us) time stamp that can be used for time-interval measurements.  

  

  

时间: 2024-10-04 07:08:58

【C&C++】查看代码运行时间的相关文章

用SWD调试接口测量代码运行时间 ( SWO )

用SWD调试接口测量代码运行时间 关于时间测量的种种问题 在嵌入式中,我们经常需要测量某段代码的执行时间或测量事件触发的时间,常规的思路是: 1:在测量起始点,反转电平2:在测量结束点,再次反转电平 然后通过示波器或者逻辑分析仪来测量反转间隔,也就是代码时间 这种方法,在测量两个或多个时间信号同步的时候,非常有用,实际上,这也是唯一的方法. 但是如果在测量中,其它代码也会控制这个管脚电平或者周期性动作,这时便需要在<动作1>之前增加前导码,从而便于在繁杂的波形中,一眼识别出需要特定的波形 同时

Objective-C 计算代码运行时间

转自:http://www.isaced.com/post-213.html Objective-C 计算代码运行时间 JUN 25 今天看到一篇关于iOS应用性能优化的文章,其中提到计算代码的运行时间,觉得非常有用,值得收藏.不过在模拟器和真机上是有差异的,以此方法观察程序运行状态,提高效率. 第一种:(最简单的NSDate) NSDate* tmpStartData = [NSDate date]; //You code here... double deltaTime = [[NSDate

Stopwatch检测代码运行时间

System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // you code .... stopwatch.Stop(); // 停止监视 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 double hours = timespan.TotalHours; // 总小时 double minutes =

基于jquery地图特效全国网点查看代码

基于jquery地图特效全国网点查看代码.这是一款简单实用的jQuery地图特效,主要知识点是jquery和css实现了中图地图,提示层效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="m_map"> <div class="mp mp1"> <div class="feng"> <div class="tree"> <div

高效编程——C++测试代码运行时间方法

C++测试代码运行时间方法 方法一 最常用的执行时间测试方法,利用clock函数,精确度能达到ms级. 直接看代码吧,这样最直观: #include "stdafx.h" #include <ctime> #include <vector> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]){ clock_t start,finish; long

C#如何测试代码运行时间

第一种方式: System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // 需要测试的代码 .... stopwatch.Stop(); // 停止监视 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 double hours = timespan.TotalHours; // 总小时 double min

KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)

源:KEIL MDK 查看代码量.RAM使用情况--RO-data.RW-data.ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间; RO-data是 Read Only 只读常量的大小,如const型; RW-data是(Read Write) 初始化了的可读写变量的大小; ZI-data是(Zero Initialize) 没有初

测试代码运行时间

在C#中有一个秒表类:Stopwatch,用这个类可以方便的测试一下代码运行时间.要使用stopwatch要先加一个命名空间,System.Diagnostics. 具体用法如下: Stopwatch timer = new Stopwatch(); long total = 0; timer.Start();//开始计算时间 for (long i = 1; i <= 1000; i++) { total += i; } timer.Stop(); Console.WriteLine(time

代码运行时间的测量方法(linux / windows)

Windows平台下代码运行时间测量方法: 一:毫秒级 GetTickCount() #include <windows.h> 二:秒级 Time() #include <time.h> 三:微秒级 QueryPerformanceCounter(&end) #include <windows.h> Linux平台下时间测量方法: 一:秒级 C语言库函数time() 二:微秒级 C语言库函数 gettimeofday() 本身时间消耗3ms左右 三:纳秒级 RD