泛泛地說說Managed 程式碼的運行效率問題

來源:互聯網
上載者:User

誰都知道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服務的需求的井噴式增長,這些也都是極其重要的原因。而電腦程式設計語言的發展是在這眾多的原因中尋求一個平衡點,這個平衡點甚至不能針對所有領域都做到平衡,只能針對某些特定領域達到平衡。

這個道理大家都想得明白。

但是具體到某種特定的程式設計語言,某些人就想不明白了,開始犯軸了。有點好笑呀。

詳細的測評文章,大家可能都多少看過一些吧,這些文章,由於測試方法、測試環境大相徑庭,所以結論也不未必一致,但是看這類文章不是簡單地看一個結論就完了,要看它的測試方法、測試的情境,從中得到一些對自己確實有用的資訊。

參考文獻:

  • Benchmark start-up and system performance for .Net, Mono, Java, C++ and their respective UIhttp://www.codeproject.com/Articles/92812/Benchmark-start-up-and-system-performance-for-Net
  • [Mono-list] Mono C# versus Java 6 -server performance
    http://lists.ximian.com/pipermail/mono-list/2007-November/037091.html
  • C#, C++, Java效能對比
    http://www.cppblog.com/Chipset/archive/2009/03/01/75266.html
  • 應用程式的效能: C# vs C/C++
    http://www.cnblogs.com/skyivben/archive/2008/07/02/1234335.html
  • 詳細評測C#與C/C++的效能對比,看下誰更強?
    http://www.xueit.com/cshare/show-7142-1.aspx
  • C# vs C/C++ Performance
    http://www.codeproject.com/Articles/24045/C-vs-C-C-Performance
  • Stream I/O Performance
    http://www.cnblogs.com/slime/archive/2009/11/11/1600601.html
  • Improving .NET Application Performance and Scalability
    http://msdn.microsoft.com/zh-cn/library/ff649152.aspx
  • .NET Performance Testing and Optimization - The Complete Guide

    http://book.douban.com/subject/4912580/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.