姑且認為題主問的是執行效率吧
表面上看,是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...