c語言執行時間
❶ c語言運行時間的問題
#include
#include
main()
{
long
a,b;
a=clock();
/*要測試的程序部分*/
b=clock();
printf("執行用時%ldms",b-a);
}
這個是可以的,你可以根據你自己的需要將此結構加在你的程序中來測試c程序運行的時間。
要注意此結構的核心部分,頭函數time。h以及clock();這可是此結構的重點啊。
❷ C語言運行一條語句所用時間如何計算
把time.h
include進來
然後在代碼的前面和後面都加一條代碼,獲得時間
long
start=clock();
long
end=clock();
兩個減一下就是秒數
❸ 那位高手知道C語言中如何查看程序運行時間
獲取程序運行時間:
在<time.h>里有函數clock();本身這個函數取得的時間好像是ms,要取得s就
寫成clock()/CLOCKS_PER_SEC;但CLOCKS_PER_SEC是在time.h里定義的,如果沒這個定義
那隻能用clock();取得ms;這個函數的執行不會中途停止,如果是在windows系統下,因為它是
多任務系統,它需要在各任務之間切換,如果在測試過程中,執行其他程序,所其得的時間,就會
出現差別,還有windows運行速度相當快,對於小型的測試,所得的時間幾乎為0,因此最好將
要測試的過程執行100次或以上,然後再將取得的時間執行次數;輸出非常耗時間,沒什麼必要
的話,就不要輸出
這是一個測試選擇排序的程序
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
#define
M
1000
/*
執行次數
*/
#define
N
500
/*
數組大小
*/
void
SelectSort(int
*a,int
l,int
r)
{
int
i,j,v;
for
(i=0;i<r;i++)
{
for
(j=i+1;j<=r;j++)
{
if
(*(a+i)>*(a+j))
v=*(a+i),*(a+i)=*(a+j),*(a+j)=v;
}
}
}
void
main()
{
int
a[N],i,j;
double
start,finish;
/*
開始時間,結束時間
*/
start=(double)clock();
/*
我的time.h內沒有CLOCKS_PER_SEC
*/
for
(j=0;j<M;j++)
{
/*
執行M次
*/
for
(i=0;i<N;*(a+i++)=rand()%10);
/*
每次重新賦值
*/
SelectSort(a,0,N-1);
}
finish=(double)clock();
printf("%.4fms",(finish-start)/M);
getchar();
}
❹ 怎樣計算程序的執行時間(C語言中)
在c語言中有專門處理系統時間,程序計時等等功能的庫,
即time.h
在time.h中函數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。
下面這個程序計算了循環1千萬次所用的時間:
#include 「stdio.h」
#include 「stdlib.h」
#include 「time.h」
int main( void )
{
long i = 10000000L;
clock_t start, finish;
double ration;
/* 測量一個事件持續的時間*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- ) ;
finish = clock();
ration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", ration );
system("pause");
}
運行結果如下:
Time to do 10000000 empty loops is 0.03000 seconds
參考資料:http://www.zxbc.cn/html/cjjhs/0312542045823.html
❺ 計算C語言程序運行時間(hello world)
#include "time.h"
#include "stdio.h"
main()
{
double start, finish;
start = clock();//取開始時間
printf("Hello, World!\n");
finish = clock();//取結束時間
printf( "%f seconds\n",(finish - start) / CLOCKS_PER_SEC);//以秒為單位顯示之
}
上面的代碼理論上是可以顯示printf("Hello, World!\n");語句的運行時間的,但我猜實際的顯示結果是0,因為printf("Hello, World!\n");這個語句的運行時間是可以忽略不計的,加一個次數較多的循環才能看到效果
❻ C語言中,一個語句執行一般(家用PC)需要多少時間
這個需要分情況來看。
1.C語言源程序通過預處理然後編譯,產生匯編代碼,不同的匯編代碼和指令有不同的執行時間。
2.一個指令的執行時間,用其所需要的指令周期(執行一條指令所需要的時間)來衡量。對於單位元組指令,就是一個讀取-執行周期(fetch-execute cycle),對於多位元組指令,還需要更多的指令周期。
3.一個指令周期,一般是由若干個機器周期(完成一次基本操作需要的時間,比如獲取變數在RAM當中的地址)組成。
4.再一個,時鍾周期,這個可以形象一點地和通常所說的主頻聯系起來,比如CPU核心的主頻是2.5GHz,則時鍾周期為0.4ns,這個是計算機當中最小的時間計量單位。一個機器周期由若干個時鍾周期組成。
❼ C語言執行時間
給你個程序看看把.基本就是這樣做的,還有個我忘了
就用clock函數把把需要統計的語句放在其之間即可
如果要進行微秒級的計時,則可以使gettimeofday
#include <time.h>
#include <stdio.h>
int main(void)
{
clock_t t_start; /* start time when test starts */
clock_t t_end; /* end time when test ends */
t_start = clock(); /* get start time */
/* test code */
t_end = clock(); /* get end time */
/* display result */
printf("time: %.3f s\n", (double)(t_end-t_start)/CLOCKS_PER_SEC);
return 0;
}
❽ C語言中 ,一個語句執行一般(家用PC)需要多少時間
這個需要分情況來看。
1.C語言源程序通過預處理然後編譯,產生匯編代碼,不同的匯編代碼和指令有不同的執行時間。
2.一個指令的執行時間,用其所需要的指令周期(執行一條指令所需要的時間)來衡量。對於單位元組指令,就是一個讀取-執行周期(fetch-execute cycle),對於多位元組指令,還需要更多的指令周期。
3.一個指令周期,一般是由若干個機器周期(完成一次基本操作需要的時間,比如獲取變數在RAM當中的地址)組成。
4.再一個,時鍾周期,這個可以形象一點地和我們通常所說的主頻聯系起來,比如CPU核心的主頻是2.5GHz,則時鍾周期為0.4ns,這個是計算機當中最小的時間計量單位。一個機器周期由若干個時鍾周期組成。
綜上所述,你的問題沒有明確的答案。這取決於你的CPU的主頻,執行的是何種類型的C語言語句,是否編譯器有對其進行優化。
❾ 一條C語言指令運行的時間是多少
視編譯後的內容定。
最終計算機運行的都是匯編語言的指令。因此,c語言只是個過渡的高級編譯工具。
如果需要看某個c語言命令的運行時間,建議編譯後,查看其中的每條匯編指令,再查相關的匯編指令的運行周期,根據cpu的時鍾,累計計算出具體多少時間。
粗略的辦法:
將某條c語言命令重復運行1萬遍(以上),記錄開始的時間和結束的時間,並除運行次數。