2014-01-12 97 views
0

我從來不覺得C++比C慢。那些說這是否意味着編譯時間的人?語句「C++比C慢」是指編譯還是執行?

我認爲在許多條件下C++比C更合理,如優化參考。

+0

「我認爲在很多情況下C++比C更合理優化。」 - 這也是Bjarne所說的。但是,在某些情況下(例如,多態性,即虛函數被調用),當一個C++程序運行速度比它的C等價。另外,編譯C++是一項比較複雜的任務,因此它比C編譯更具計算密集性(在C++中,我們有* huuuuge *頭文件,模板,類型推斷等等)。 – 2014-01-12 07:10:42

+0

編寫比C慢得多的C++是可能的(特別是通過使用大量不明智的虛擬函數等)。寫得好的C++通常和C一樣快,有時候速度要快得多。不幸的是,這個問題很可能會導致很多意見和辯論,但很難以真正的答案,所以很可能會因爲不符合SO的格式而被封閉。 –

+0

同意H2CO3。我最近編寫了一個C++類,它執行了一項不重要的任務。我在該堆棧上創建了一個實例,並用常量值調用它。海灣合作委員會基本上預先解決了結果,並優化了幾乎所有的東西。但是,當談到比較語言的速度時,它歸結爲這些語言的語義和「實踐」。如果你用C語言在C++中創建了'新'堆對象,那麼你可能會選擇不這樣做,當然它可能會變慢。在C++中V表可能會比較慢,但是如果你用C語言和模擬V表編寫了等效代碼,那麼C就不會更快。 – slipperyseal

回答

0

從SO:Is C notably faster than C++

在C++中, 「您只需支付您所使用的。」所以沒有任何東西會比C慢。特別是對於科學程序,模板表達式可以使用模板引擎執行一些自定義優化以處理程序語義。

爲Python等項目選擇C語言的原因是很多人完全理解它,所以一個大的代碼庫不會混淆許多大量的貢獻者。

在幾乎所有情況下,C是有效的C++(這是由於C C++的近一個子集),所以幾乎總是有辦法做的事情,是至少同樣快於C++爲C.如後所述在上面引用的SO答案中,C在空間效率方面具有優勢。

+0

是的,但這並沒有回答「人們爲什麼說C++比C慢」的問題。人們會這樣說,有時候這是真的......通常是一個不合適的開發團隊,或者出於某種原因,C++的某些較慢特性得到保證的情況... – GreenAsJade

+0

我認爲自從我回答它之後,問題就發生了變化。當我回答時,它是「何時何地C++比C慢?」 – sundance

+0

基於概念的多態性如何? – user3186766

0

說這個不代表編譯時間的人。它們的意思是執行時間,很大程度上是由於虛擬功能對性能的影響。

+0

我認爲基於概念和概念的多態會比現在使用的多態更好。 – user3186766