首页 > 编程知识 正文

为什么要在linux环境下编程(linux time效率,time(),gettimeofday()及GetTickCount()效率比较)

时间:2023-05-03 10:20:07 阅读:121363 作者:2933

自转: http://1.guotie.Sina app.com/p=157

time (和day gettime of gettime )是linux系统调用,GetTickCount是windows函数。

time :返回到1970-1-100336000336000的秒数;

日期时间获取:除了秒数之外,还有纳秒,用于更准确的计时;

GetTickCount :返回从系统启动到当前的毫秒数

使用3个函数,分别调用1千万次,测试结果如下。

time :约967毫秒;

日期时间:约1800毫秒;

GetTickCount :约70毫秒;

GetTickCount相当快,可见在linux系统上频繁使用time和gettimeofday对效率有很大影响。

参考资料:

文中给出了在linux上获得毫秒级时间的思路,并给出了相关代码。

测试代码如下。

linux :

[c]

#包含

#包含

#包含

#define TEST_LOOPS 10000000

int main () )

{

time_t tm;

结构时间Tv1、tv2、tv_test;

int i;

日期时间获取(tv1,NULL );

for(I=0; i TEST_LOOPS; I )

{

日期时间获取(TV _ test,NULL );

}

每日获取时间(tv2,NULL );

运行日期设置% utimes,used %u usec.n ),TEST_LOOPS,

(tv2.TV _ sectv1.TV _ sec ) * 1000000

tv2.TV _ usectv1.TV _ usec;

日期时间获取(tv1,NULL );

for(I=0; i TEST_LOOPS; I )

{

时间(TM;

}

每日获取时间(tv2,NULL );

printf (运行时% utimes,used %u usec.n ),TEST_LOOPS,

(tv2.TV _ sectv1.TV _ sec ) * 1000000

tv2.TV _ usectv1.TV _ usec;

返回0;

}

[/c]

windows :

[c]

//tick.cpp :控制台定义APP应用程序的入口点。

//

#include 'stdafx.h '

#include 'Windows.h '

#define TEST_LOOPS 10000000

int_tmain(intargc,_TCHAR* argv[] () ) ) ) ) ) ) ) ) )。

{

int i=0;

unsigned int tv1、tv2、tv_test;

tv1=GetTickCount (;

for (; i TEST_LOOPS; I )

{

tv_test=GetTickCount (;

}

tv2=GetTickCount (;

运行gettickcount % utimes,used %u msec,current tick: %u.n ),

TEST_LOOPS,TV2tv1,tv2;

返回0;

}

[/c]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。