1ï¼æ¦å¿µ
å¨C/C++ä¸ï¼å¯¹
å符串çæä½æå¾å¤å¼å¾æ³¨æçé®é¢ï¼åæ ·ï¼C/C++对æ¶é´çæä½ä¹æ许å¤å¼å¾å¤§å®¶æ³¨æçå°æ¹ãæè¿ï¼å¨ææ¯ç¾¤ä¸æå¾å¤ç½åä¹å¤æ¬¡é®å°è¿C++è¯è¨ä¸å¯¹æ¶é´çæä½ãè·ååæ¾ç¤ºçççé®é¢ãä¸é¢ï¼å¨è¿ç¯æç« ä¸ï¼ç¬è
å°ä¸»è¦ä»ç»å¨C/C++ä¸æ¶é´åæ¥æç使ç¨æ¹æ³.
éè¿å¦ä¹ 许å¤C/C++åºï¼ä½ å¯ä»¥æå¾å¤æä½ã使ç¨æ¶é´çæ¹æ³ãä½å¨è¿ä¹åä½ éè¦äºè§£ä¸äºâæ¶é´âåâæ¥æâçæ¦å¿µï¼ä¸»è¦æ以ä¸å 个ï¼
Coordinated Universal Timeï¼UTCï¼ï¼
åè°ä¸çæ¶ï¼å称为
ä¸çæ åæ¶é´ï¼ä¹å°±æ¯å¤§å®¶æçç¥ç
æ ¼æå¨æ²»æ åæ¶é´ï¼Greenwich Mean Timeï¼GMTï¼ãæ¯å¦ï¼ä¸å½å
å°çæ¶é´ä¸UTCçæ¶å·®ä¸º+8ï¼ä¹å°±æ¯UTC+8ãç¾å½æ¯UTC-5ã
Calendar Timeï¼æ¥åæ¶é´ï¼æ¯ç¨âä»ä¸ä¸ªæ åæ¶é´ç¹å°æ¤æ¶çæ¶é´ç»è¿çç§æ°âæ¥è¡¨ç¤ºçæ¶é´ãè¿ä¸ªæ åæ¶é´ç¹å¯¹ä¸åç
ç¼è¯å¨æ¥è¯´ä¼ææä¸åï¼ä½å¯¹ä¸ä¸ªç¼è¯ç³»ç»æ¥è¯´ï¼è¿ä¸ªæ åæ¶é´ç¹æ¯ä¸åçï¼è¯¥ç¼è¯ç³»ç»ä¸çæ¶é´å¯¹åºçæ¥åæ¶é´é½éè¿è¯¥æ åæ¶é´ç¹æ¥è¡¡éï¼æ以å¯ä»¥è¯´æ¥åæ¶é´æ¯âç¸å¯¹æ¶é´âï¼ä½æ¯æ è®ºä½ å¨åªä¸ä¸ªæ¶åºï¼å¨åä¸æ¶å»å¯¹åä¸ä¸ªæ åæ¶é´ç¹æ¥è¯´ï¼æ¥åæ¶é´é½æ¯ä¸æ ·çã
epochï¼æ¶é´ç¹ãæ¶é´ç¹å¨æ åC/C++ä¸æ¯ä¸ä¸ªæ´æ°ï¼å®ç¨æ¤æ¶çæ¶é´åæ åæ¶é´ç¹ç¸å·®çç§æ°ï¼å³æ¥åæ¶é´ï¼æ¥è¡¨ç¤ºã
clock tickï¼æ¶é计æ¶åå
ï¼èä¸æå®å«åæ¶éæ»´ç次æ°ï¼ï¼ä¸ä¸ªæ¶é计æ¶åå
çæ¶é´é¿çæ¯ç±CPUæ§å¶çãä¸ä¸ªclock tickä¸æ¯CPUçä¸ä¸ª
æ¶éå¨æï¼èæ¯C/C++çä¸ä¸ªåºæ¬è®¡æ¶åä½ã
æ们å¯ä»¥ä½¿ç¨ANSIæ ååºä¸çtime.h
头æ件ãè¿ä¸ªå¤´æ件ä¸å®ä¹çæ¶é´åæ¥ææ使ç¨çæ¹æ³ï¼æ 论æ¯å¨ç»æå®ä¹ï¼è¿æ¯å½åï¼é½å
·æææ¾çCè¯è¨é£æ ¼ãä¸é¢ï¼æå°è¯´æå¨C/C++ä¸ææ ·ä½¿ç¨æ¥æçæ¶é´åè½ã
2ï¼ è®¡æ¶
C/C++ä¸ç计æ¶å½æ°æ¯clock()ï¼èä¸å
¶ç¸å
³ç
æ°æ®ç±»åæ¯clock_tãå¨MSDNä¸ï¼æ¥å¾å¯¹clockå½æ°å®ä¹å¦ä¸ï¼
clock_t clock( void );
è¿ä¸ªå½æ°è¿åä»âå¼å¯è¿ä¸ªç¨åºè¿ç¨âå°âç¨åºä¸è°ç¨clock()å½æ°âæ¶ä¹é´çCPUæ¶é计æ¶åå
ï¼clock tickï¼æ°ï¼å¨MSDNä¸ç§°ä¹ä¸ºæéæ¶é´ï¼wal-clockï¼ãå
¶ä¸clock_tæ¯ç¨æ¥ä¿åæ¶é´çæ°æ®ç±»åï¼å¨time.hæ件ä¸ï¼æ们å¯ä»¥æ¾å°å¯¹å®çå®ä¹ï¼
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
å¾ææ¾ï¼clock_tæ¯ä¸ä¸ªé¿æ´å½¢æ°ãå¨time.hæ件ä¸ï¼è¿å®ä¹äºä¸ä¸ª
常éCLOCKS_PER_SECï¼å®ç¨æ¥è¡¨ç¤ºä¸ç§
éä¼æå¤å°ä¸ªæ¶é计æ¶åå
ï¼å
¶å®ä¹å¦ä¸ï¼
#define CLOCKS_PER_SEC ((clock_t)1000)
å¯ä»¥çå°æ¯è¿ååä¹ä¸ç§ï¼1毫ç§ï¼ï¼è°ç¨clockï¼ï¼å½æ°è¿åçå¼å°±å 1ãä¸é¢ä¸¾ä¸ªä¾åï¼ä½ å¯ä»¥ä½¿ç¨å
¬å¼clock()/CLOCKS_PER_SECæ¥è®¡ç®ä¸ä¸ªè¿ç¨èªèº«çè¿è¡æ¶é´ï¼
void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}
å½ç¶ï¼ä½ ä¹å¯ä»¥ç¨clockå½æ°æ¥è®¡ç®ä½ çæºå¨è¿è¡ä¸ä¸ªå¾ªç¯æè
å¤çå
¶å®äºä»¶å°åºè±äºå¤å°æ¶é´ï¼
#include â
stdio.hâ
#include â
stdlib.hâ
#include âtime.hâ
int main( void )
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* æµéä¸ä¸ªäºä»¶æç»çæ¶é´*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- ) ;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
å¨ç¬è
çæºå¨ä¸ï¼è¿è¡ç»æå¦ä¸ï¼
Time to do 10000000 empty loops is 0.03000 seconds
ä¸é¢æ们çå°æ¶é计æ¶åå
çé¿åº¦ä¸º1毫ç§ï¼é£ä¹è®¡æ¶ç精度ä¹ä¸º1毫ç§ï¼é£ä¹æ们å¯ä¸å¯ä»¥éè¿æ¹åCLOCKS_PER_SECçå®ä¹ï¼éè¿æå®å®ä¹ç大ä¸äºï¼ä»è使计æ¶ç²¾åº¦æ´é«å¢ï¼éè¿å°è¯ï¼ä½ ä¼åç°è¿æ ·æ¯ä¸è¡çãå¨æ åC/C++ä¸ï¼æå°ç计æ¶åä½æ¯ä¸æ¯«ç§ã