C 與 C 誰的效率高,為什麼?

2021-08-03 14:53:06 字數 545 閱讀 1475

姑且認為題主問的是執行效率吧

表面上看,是c的執行效率要高,c簡單直接,沒有c++那些複雜的特性,編譯生成的彙編**都直接對應每行c**,沒有c++編譯器插入的奇怪的東西,比如 隱式型別轉換,虛函式呼叫,算符過載,拷貝構造等。

但是看問題不能這麼表面,新手們容易認為效能問題是選擇造成,只要我選擇了正確的語言、框架函式、演算法自然就有好的效能,實際上好的效能只能是靠profiling工具壓榨出來的。

效能瓶頸之所以叫瓶頸,就是因為只是極少數的地方有效能問題,不可能是整個**到處都是瓶頸,上profiling工具通常可以把效能問題定位到少數幾個函式和資料結構。

解決效能問題靠猜測是很沒效率的,即使你碰巧猜對了也很難證明。

如果是windows,上vtune,**是瓶頸一目了然,甚至給你定位到具體是哪行彙編碼。

如果是ios,上instruments,是哪個函式的問題一目了然。

再回到c和c++的效能問題吧,我用c++可以提高開發效率,節省下來的時間可以用來做profiling,那麼最後誰的執行效率高還真不好說呢。

拋開開發實踐,空談語言的效率是毫無意義的。

前置 為什麼比後置 效率高

前置 type operator 後置 const type operator int 為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cin...

前置 為什麼比後置 效率高

為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cint cint cint operator 前置的是沒有引數的,並且返回引用 const ...

前置 為什麼比後置 效率高

前置 type operator 後置 const type operator int 為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cin...