自转: 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]