成都创新互联网站制作重庆分公司

c语言微秒级的计时函数,c++微秒计时

请问C语言中clock()函数该怎么用?

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

创新互联于2013年开始,先为新晃等服务建站,新晃等地企业,进行企业商务咨询服务。为新晃企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。

在time.h文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。

clock的返回值一直是0的原因:

1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。

2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。

3、建议使用time gettimeofday函数来计时。

扩展资料:

C语言中clock()函数的程序例1:(TC下运行通过)

#include stdio.h

#include time.h

int main(void)

{

clock_t start, end;

start = clock();

delay(2000);

end = clock();

printf("The time was: %f\n", (double)(end - start) / CLK_TCK);

return 0;

}

说明:CLK_TCK 定义在TC中的time.h中:#define CLK_TCK18.2。

在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。

实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。

参考资料来源:百度百科-clock()

单片机C语言中怎么实现微秒级延时?

可以用_nop_( )函数来实现微秒级的延时。

_nop_();            // 直接当成一条语句使用,产生一条NOP指令

NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。

注:使用该函数时,需要将头文件#includeintrins.h包含进源文件中。

求一个C语言的微秒级延时函数

一个微秒级的延时函数今天要用到一个微秒级的定时函数,到网上search下,找了几个都不能用,我晕,无奈,还是自己动手比较好,赶紧贴出来。

免得以后要用的时候又不知道那里去找,方便自己也方便大家^_^ 又避免重复发明轮子^_^

/********************************************************************

Created: 2006/09/02

FileName: t.c

Author: Liu Qi

Purpose: 测试微秒级延时

*********************************************************************/

#include windows.h

#include time.h

#include stdio.h

ULONG GetTimeDis(struct tm first, struct tm second) //计算两次时间差

{

return abs((first.tm_hour * 3600 + first.tm_min * 60 + first.tm_sec)

- (second.tm_hour * 3600 + second.tm_min * 60 + second.tm_sec));

}

void Delay(ULONG ulMicroSeconds)

{

LARGE_INTEGER timeStop;

LARGE_INTEGER timeStart;

LARGE_INTEGER Freq;

ULONG ulTimeToWait;

if (!QueryPerformanceFrequency( Freq ))

return;

ulTimeToWait = Freq.QuadPart * ulMicroSeconds / 1000 / 1000;

QueryPerformanceCounter ( timeStart );

timeStop = timeStart;

while( timeStop.QuadPart - timeStart.QuadPart ulTimeToWait )

{

QueryPerformanceCounter( timeStop );

}

}

int main(void)

{

struct tm timeStart, timeEnd;

_getsystime(timeStart);

Delay(1000 * 1000 * 3); //3秒

_getsystime(timeEnd);

printf("用时:%d秒\n", GetTimeDis(timeStart, timeEnd));

return 0;

}


文章题目:c语言微秒级的计时函数,c++微秒计时
分享路径:http://cxhlcq.com/article/hdpohd.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部