2014-03-27 124 views
-4

哪一個更快?在下列情況下哪個更快?

假定C++的平均編譯器。

/////////////////////// 
Code A: 

int a,b,c; 
/////////////////////// 
Code B: 

int a; 
int b; 
int c; 
/////////////////////// 

也有人說,編譯器會完全忽略註釋。 Like-

"// Comment" 
OR 
/* Comment*/ 

假設您的程序有一百萬行的註釋塊。我確定編譯器首先讀取「/ *」並搜索「* /」,並將這兩者之間的所有文本標識爲註釋。但是這並不意味着編譯器在遇到「* /」後會遍歷數百行代碼來查找「* /」。

TLDR;

我的問題是: -

  • 1)是編寫一個更快或代碼B ???短代碼意味着更少的編譯時間?
  • 2)評論是否有助於編譯時間?
  • 3)如何學會優化我的代碼以獲得最佳性能?
+1

你在說什麼?你沒有什麼可以優化的 –

+0

你可以對每個基準進行基準測試,但我可以告訴你,你可能會對結果感到失望。 – chris

+0

您的意思是優化您的代碼編譯器執行時間? – MatthiasB

回答

4
  1. 不,短代碼並不意味着更少的執行時間。例如,請參閱here
  2. 不,註釋不會更改代碼的執行時間。 (如果你甚至注意到編譯時間增加,我會感到很驚訝)
  3. 有幾個talks在線看着這個。最重要的是:衡量一切!
2

它們將完全相同的代碼和相同的速度。一個變量聲明通常不會被編譯器指令爲某些事情,只有他的一個聲明,「把stackpointer-8字節作爲無符號整數處理」。如果你在同一行中聲明這些變量,則沒有區別。

答案:

  1. 一般不會。
  2. 不,他們將在編譯的第一階段被淘汰。
  3. 太寬泛。通常你應該使用優化的代碼和高效的算法。
+0

如果評論超過了百萬行,該怎麼辦?就像我說的。 編譯器需要搜索「/ *」和「* /」來標識這兩個字符之間的字符是否正確?這是否意味着編譯器正在掃描中間的所有字符以查找「* /」來將其作爲註釋塊來完成? – kotAPI

+1

@kotAPI這是一個簡單的概念...註釋不是可執行代碼的一部分。如果他們不在那裏,那麼他們不會影響它。過多的評論可能會延長_compile_(但你不可能注意到它)。 – mah

+0

@mah啊,這就是我期待的答案,我知道評論不會增加執行時間,我想知道如果評論塊超過一百萬行需要花費很長時間,是否需要很多時間? – kotAPI

2

1)不,一般不會。 '睡眠(24 * 60 * 60 * 1000)'需要一天的時間才能執行。

2)不,當然不是。可能發生的「最糟糕的」事情是建築需要稍長的時間,而我的意思是「稍微」 - 電腦真的很快。

3)瞭解更多關於編譯過程和計算機的更多信息。

相關問題