泛泛地说说托管代码的运行效率问题

来源:互联网 发布:linux awk 时间函数 编辑:程序博客网 时间:2024/04/30 19:44
谁都知道C比C++快,C++比C#快。
问题是快多少。

而具体快多少也不应该泛泛而谈,应该是什么类型的操作中快百分之多少,以及细分为冷启动、热启动、运行中、多次运行均值、峰值、资源受限的一些特殊情况,分这些情况下分别向此地测试、分析、说明。


Microsoft 提供的资料宣称 .NET 大约是 C/C++ 执行效率的 90%。XNA 则提供资料宣称 Managed DirectX 效率可以达到 Native DirectX 的 98%。

而具某非官方的测试,在一般的应用中C#的性能能达到C++的70%-80%。
作为托管代码来说这个成绩已经很不错了。

I/O操作方面C#应该不输于C++。
数值计算方面肯定是C > C++ > C#
操作内存当然也是C/C++ > C#
可能会令很多人吃惊的是,如果不做特别的优化,文件操作C#也许会比C/C++快。


我对这个结果相当满意,不知诸位满意否。

如果开发实时性系统,托管代码(.Net/Java)确实是存在软肋的,但非实时性系统且资源不严格受限的大多数情况下,托管代码已经很令人可以接受了。

注意在这里有三个前提:

  • 非实时
  • 资源不严格受限
  • 一般情况下

更何况系统的性能还可以通过更好的系统架构、更合理的流程设计、更优的算法来进一步提升,这些方面的提升可能不止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/


原创粉丝点击