1樓:
把time.h include進來
然後在**的前面和後面都加一條**,獲得時間 long start=clock();
long end=clock();
兩個減一下就是秒數
2樓:匿名使用者
使用time函式:
time函式舉例
int main()
c語言中,乙個語句執行一般(家用pc)需要多少時間?
c語言的for迴圈中執行一次需多少機器週期?
3樓:萬能導師
機器迴圈,當然只是在微控制器中,不同的微控制器使用不同的編譯軟體,最終都轉換成彙編,把機器**燒錄成微控制器。
不同的編譯軟體可以用不同的方式編譯語句。以keil為例。(我= 0;我< 1;n + +我+ +);(i, n是char或unsigned char)
賦值語句(i=0)有兩個機械迴圈,
乙個判斷語句(i <1) 4個機械迴圈,
乙個自加語句(n++) 1機械迴圈,
另乙個自我遞增語句(i++)1機械迴圈,
另乙個判斷語句(i <1) 4個機械迴圈,結束。
擴充套件資料:
指令週期:
每次cpu獲取一條指令並執行它,它就完成一系列操作,通常稱為指令週期。換句話說,指令週期就是獲取一條指令並執行它所花費的時間。由於每條指令的操作功能不同,每條指令的指令週期也不同。
例如加法指令的指令週期與乘法指令的指令週期是不同的。指令週期通常以cpu週期的數量表示,也稱為機器週期。所需的機器週期數隨指令的不同而變化。對於一些簡單的單位元組指令。
在指令取出週期中,將指令取出到指令暫存器後,立即對其進行解碼並執行,不需要其他機器週期。對於更複雜的指令,例如轉換和乘法指令,需要兩個或更多的機器週期。
具有乙個機器週期的指令通常稱為單週期指令,具有兩個機器週期的指令稱為雙週期指令。
4樓:小雨手機使用者
機器週期當然是在微控制器上才有的說法,不同的微控制器採用不同的編譯軟體,最終都是轉成彙編、機器碼燒錄進微控制器。
不同的編譯軟體,對 for 語句的編譯也不盡相同,以keil 為例,對 for(i=0;i<1;i++) n++;(i,n 均為 char 型或 unsigned char 型)進行編譯,得:
①一條賦值語句(i=0) 2個機械週期,
②一條判斷語句(i<1) 4個機械週期,
③一條自增語句(n++) 1個機械週期,
④又一條自增語句(i++) 1個機械週期,⑤又一條判斷語句(i<1) 4個機械週期,結束。
5樓:希聲和寡
***********************************=
問題補充:5樓的朋友,如果我改成
for (i=9;i<100;i++)
x=2;
其延時又是多少?
***********************************=
賦值語句的耗時一般是不計入時間消耗的(就像我們計算時間複雜度時,不考慮賦值的時間消耗一樣)
所以:for (i=9;i<100;i++)
x=2;
的時間消耗就可以理解為for (i=9;i<100;i++);的時間消耗,
大約就是:
92*8*1us=0.736ms(12m晶振)
12m的晶振的機器週期是1/12m*12,就是1us
其次不同的微控制器執行語句的機器週期也不一定一樣(比如:atmel 51系列及大多數51的乙個機器週期是12個時鐘週期,華邦的只需要4個時鐘週期)。不過大體來說,一條for迴圈大概8個機器週期,在12m晶振下,通常用以下**實現1ms的延時:
void delayms(unsigned int ms) }
大概算一下,120*8*1us=1ms,如果需要精確的定時,還是得用定時器。
如果是for (i=0;i<100;i++);的話,
那麼 大概算一下,100*8*1us=0.8ms
6樓:匿名使用者
for(i = 0; i < 100; i++);
這條語句被優化掉了,
你可以將i的宣告新增volatile以阻止編譯器對其進行優化然後在用3樓 giftbowen 的方法試之
7樓:
利用clock()函式
clock_t start=clock();
for(i=0;i<100;i++);
clock_t end=clock();
這裡clock_t 是clock()函式返回型別的別名,意味著可以講變數宣告為clock_t型別,接受clock()函式返回值
clock()函式返回程式開始執行後的系統時間end-start的值就是100次for迴圈所用的系統時間不過我試了一下,好像,就算讓for迴圈不執行空語句,100次for迴圈所用的系統時間也是0.0
系統時間的單位是ms可能跟機器週期單位是μs差很多吧
8樓:匿名使用者
clock函式,計算用到的時鐘數。
9樓:世鑲柳
執行時間可能是零!
這和編譯器有關(如優化級別),還和cpu有關(如流水線不一樣)。
在c語言程式設計中,如果先執行一條語句,隔段時間,在執行下一條語言,該怎樣實現呢?
10樓:緋雨閒丸
兩句語句中間加上
sleep(2000);
就是等2秒,引數單位是毫秒
貌似要引用
11樓:匿名使用者
執行完一條語句後寫乙個計算階乘的計算函式,然後可以通過階乘的數值控制計算的時間.
然後再直接下面一條語句
12樓:
#include
#include
void main()
13樓:匿名使用者
我個人膚淺的認為用多執行緒嘛~
51微控制器執行一條c語言程式需要多長時間?
14樓:匿名使用者
那要看你這條語句的步數了,
用彙編解釋這條語句,再查對應會變語句的步數,
晶振頻率的倒數再乘以12再乘以得到的步數就是該條語句執行的時間
15樓:
不好確定,不像彙編每條指令有其指令週期
16樓:
指令週期,和你的晶振有關,然後c語言的內容也是有關係的,不是所有語句都一樣的。不過,都很快。
17樓:匿名使用者
可以在一步步走的時候看當前時間,根據時間差算出執行所需的時間,跟晶振的頻率有關
c語言中 ,乙個語句執行一般(家用pc)需要多少時間?
編寫乙個c語言語句,要求輸出這個程式需要執行的時間(用clock()做) 該怎麼寫?
18樓:
#include
#include
int main(void)
19樓:子爵先生
#include
#include
int main()
c語言演算法的時間複雜度如何計算啊?
20樓:熊貓
看看這個 每個迴圈都和上一層迴圈的引數有關。 所以要用地推公式: 設i(n)表示第一層迴圈的i為n時的迴圈次數,注意到他的下一層迴圈次數剛好就是n,分別是0,1,2...
n-1 所以,把每一層迴圈設乙個函式分別為:j(n),k(n),t(n) 則有 i(n)=j(0)+...+j(n-1) j(n)=k(0)+...
+k(n-1) k(n)=t(0)+...+t(n-1) i(0)=j(0)=k(0)=0 t(n)=1 而總迴圈數是i(0)+i(1)...+i(n-1) 可以根據遞推條件得出準確值 所以演算法複雜度是o(i(0)+i(1)...
+i(n-1))
記得採納啊
21樓:血刺廢車
(1)時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。
乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。 (2)時間複雜度 在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。
但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。 一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。
記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。 在各種不同演算法中,若演算法中語句執行次數為乙個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。 按數量級遞增排列,常見的時間複雜度有:
常數階o(1),對數階o(log(2)n),線性階o(n), 線性對數階o(nlog(2)n),平方階o(n^2),立方階o(n^3),..., k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
22樓:問豐建思蓮
在計算之前取得系統的滴答數
inttbegin
=gettickcount();
計算完成過後再次呼叫減去滴答數就行了,單位msinttend
=gettickcount()
-tbegin;
還有其他更精確的函式,搞忘了,你最好查下msdn純c下不要用c自帶的計算滴答數的函式,不精確,應該使用系統的
c語言中語句“y x1”是怎麼執行的
埃德蒙 放後邊 x先參與 運算 計算結果賦給y 之後x值自增1。如果x 3,y x 1 之後y 2 x 4就是要記住一個規則 在變數之前時 值先自增1 再參與其他運算,在變數之後 先參與其他運算 變數值再自增1 關燁韋 先執行x 1,然後再賦值給y,然後再x 如果換成y x 1 就會先自增,再運算。...
關於C語言的一道題迴圈語句,C語言迴圈語句裡的一道例題
a.for x i 因為沒有判斷語句,所以就沒有真假判斷,程式就一直迴圈下去咯。b.while 1 因為括弧裡面是1,在邏輯上說就是真,所以迴圈也會繼續。c.for i 10 i sum i 和a一樣,沒有判斷語句。答案是d就不用說了吧。a c缺少終止條件語句,當然死迴圈 b,while 1 1表示...
求一條刪除sql語句
這個方法不錯,觸發器。就是當你刪除student表的資料的時候讓系統自動執行相應的sql語句。我用sqlserver的方式幫你寫個 其實其他資料庫也一樣,差不多 create trigger trg delete on student for delete as 在這裡就把score表的中資料刪除掉...