介紹
在MSDN中,查得對clock函數定義如下:
clock_t clock(void) ;
這個函數返回從“開啟這個程序進程”到“程序中調用clock()函數”時之間的CPU時鐘計時單元(clock tick)數,在MSDN中稱之為挂鐘時間(wal-clock);若挂鐘時間不可取,則返回-1。其中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
#include
#include
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 secondsn", duration );
system("pause");
}
在筆者的機器上,運行結果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我們看到時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在标準C/C++中,最小的計時單位是一毫秒。
同名微電影
劇情簡介
創意奇幻動畫微電影《Clock》講述了一個關于穿越鐘表的故事。在一個鐘表鋪裡,戴眼鏡的老先生,放着富有年代感和情調的《馬路天使》,一旁頑皮的小男孩擺弄着一隻鐘表,手慢腳亂中一個齒輪掉落在地,就在男孩趴到桌子地下的時候,神奇的事情發生了。男孩穿越了,他進入了一個奇幻的世界。
本片複古情懷濃重,色彩的搭配更是讓人看着舒服,隻是選擇用穿越這個題材有些效仿了。那些奇幻的東西是我們内心想要的,是我們的欲望,隻是用這種方式來實現它罷了,是一部值得我們享受的片子。



















