誰都知道C比C++快,C++比C#快。
問題是快多少。
而具體快多少也不應該泛泛而談,應該是什麼類型的操作中快百分之多少,以及細分為冷啟動、暖開機、運行中、多次運行均值、峰值、資源受限的一些特殊情況,分這些情況下分別向此地測試、分析、說明。
Microsoft 提供的資料宣稱 .NET 大約是 C/C++ 執行效率的 90%。XNA 則提供資料宣稱 Managed DirectX 效率可以達到 Native DirectX 的 98%。
而具某非官方的測試,在一般的應用中C#的效能能達到C++的70%-80%。
作為Managed 程式碼來說這個成績已經很不錯了。
I/O操作方面C#應該不輸於C++。
數值計算方面肯定是C > C++ > C#
操作記憶體當然也是C/C++ > C#
可能會令很多人吃驚的是,如果不做特別的最佳化,檔案操作C#也許會比C/C++快。
我對這個結果相當滿意,不知諸位滿意否。
如果開發即時性系統,Managed 程式碼(.Net/Java)確實是存在軟肋的,但非即時性系統且資源不嚴格受限的大多數情況下,Managed 程式碼已經很令人可以接受了。
注意在這裡有三個前提:
更何況系統的效能還可以通過更好的系統架構、更合理的流程設計、更優的演算法來進一步提升,這些方面的提升可能不止20%、30%了,成倍增長也不是沒可能。
- 大多數程式員寫的大多數C#,更容易比大多數程式員寫的大多數C/C++程式快;
- 大多數程式員寫的大多數C/C++程式,比大多數程式員寫的大多數C#程式更容易崩潰。
動腦筋想想這是為什麼吧。
電腦程式設計語言發展的曆史中,最先出現的是最低級的程式設計語言,然後不斷出現越來越進階的程式設計語言。這裡頭的因素,計算裝置越來越廉價、越來越強大隻是眾多原因之一,還有很多其他方面的原因,比如軟體工程方面的原因、人們對IT服務的需求的井噴式增長,這些也都是極其重要的原因。而電腦程式設計語言的發展是在這眾多的原因中尋求一個平衡點,這個平衡點甚至不能針對所有領域都做到平衡,只能針對某些特定領域達到平衡。
這個道理大家都想得明白。
但是具體到某種特定的程式設計語言,某些人就想不明白了,開始犯軸了。有點好笑呀。
詳細的測評文章,大家可能都多少看過一些吧,這些文章,由於測試方法、測試環境大相徑庭,所以結論也不未必一致,但是看這類文章不是簡單地看一個結論就完了,要看它的測試方法、測試的情境,從中得到一些對自己確實有用的資訊。
參考文獻: