㈠ c語言中有沒有用於計時的函數怎麼用
有,CLOCK函數。
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:clock_t clock(void) ; #ifndef _CLOCK_T_DEFINED typedef long clock_t;
#define _CLOCK_T_DEFINED #endif。
可以看到每過千分之一秒(1毫秒),調用clock函數返回的值就加1。
㈡ C++ 裡面的clock()函數用法 它能不能在一個程序裡面多次的使用 計算幾個函數的運行時間勒 請高手指教 我
clock_t clock(void);
返回當前時鍾計數, 可以在程序中多次調用,clock_t相當於U32型
因此可以定義
clock_t start_time, stop_time;
start_time = clock();
....//任意代碼
stop_time = clock();
上面代碼的運行時間就是stop_time - start_time, 單位為ms(毫秒)
㈢ c 語言中clock函數怎麼用啊
/* CLOCK.C:
等待3秒,記錄程序運行開始時間(start里)
循環600000次做運算
[a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));]
記錄程序運算結屬時間(finish里)
算出這六十萬次運行時間.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double ration;
double a;
/* 等三秒 */
printf( "Delay for 3 seconds\n" );
sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" );
/* Measure the ration of an event. */
printf( "Time to do %ld loops is ", i );
start = clock();
while( i-- ) {
a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));
}
finish = clock();
ration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%lf seconds\n", ration );
}
/* 等待多少毫秒的子程序 */
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
㈣ c語言中的clock()問題
就是
while(clock()-now<CLOCKS_PER_SEC) ;
的意思,注意後面還有個分號,這是一個空循環。因為clock會返回當前時間,now是一個過去的時刻,所以這個條件的意思是 當前時間比那個時刻晚的多少小於CLOCKS_PER_SEC,也就是如果時間相差還不到CLOCKS_PER_SEC就一直循環。因此這個循環的意思就是等待從now = clock();開始,CLOCKS_PER_SEC個tick才退出循環,繼續執行,就是等待CLOCKS_PER_SEC時間的意思,看名稱,應該是等一秒的意思。
㈤ C語言中clock的用法
clock()返回的是自程序啟動以來經過的CPU時間,不是通常意義的時間。
㈥ c語言clock怎麼用啊 算程序運行時間謝謝大家了
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
clock_t start, finish;
double ration=0;
start = clock();
/*******************************
**********添加代碼**************
*******************************/
finish = clock();
ration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", ration );
}
把你需要計算時間的代碼添加進去就可以結算出時間了。有不明白的可以繼續問我。
㈦ c語言如何計時
C語言中提供了許多庫函數來實現計時功能
下面介紹一些常用的計時函數
1. time()
頭文件:time.h
函數原型:time_t time(time_t * timer)
功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數
用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。
用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。
說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。
2. clock()
頭文件:time.h
函數原型:clock_t clock(void);
功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。
說明:可以精確到毫秒,適合一般場合的使用。
3. timeGetTime()
頭文件:Mmsystem.h引用庫: Winmm.lib
函數原型:DWORD timeGetTime(VOID);
功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。
說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。
4. GetTickCount()
頭文件:windows.h
函數原型:DWORD WINAPI GetTickCount(void);
功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。
說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
頭文件:windows.h
函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。
補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:
在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。
說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。
6. gettimeofday()
Linux C函數。
頭文件:sys/time.h
函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。
timeval的定義為:
structtimeval{
longtv_sec;//秒數
longtv_usec;//微秒數
}
可見該函數可用於在linux中獲得微秒精度的時間。
說明:使用這種方式計時,精度可達微秒。經驗證,在arm+linux的環境下此函數仍可使用。
㈧ c++庫中clock()函數的問題
C語言函數clock()
功
能:
返回處理器調用某個進程或函數所花費的時間。
用
法:
clock_t
clock(void);
說明:clock_t其實就是long,即長整形。該函數返回值是硬體滴答數,要換算成秒或者毫秒,需要除以CLK_TCK或者
CLK_TCK
CLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000,這表示硬體滴答1000下是1秒,因此要計算一個進程的時間,用clock()除以1000即可。
㈨ c語言 時間函數
c語言時間函數:
1、獲得日歷時間函數:
可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);
如果已經聲明了參數timer,可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:
2、獲得日期和時間函數:
這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?
其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼用localtime()函數在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。