.Net 2.0 与 .Net 3.5 的性能对比
Posted
技术标签:
【中文标题】.Net 2.0 与 .Net 3.5 的性能对比【英文标题】:Performance of .Net 2.0 vs .Net 3.5 【发布时间】:2010-10-05 14:07:44 【问题描述】:Microsoft 声称 .Net 3.5 框架比 2.0 有许多速度改进。有没有人能够验证此声明?
我对计算类型的东西(数学、图形等)特别感兴趣,但也更普遍?
【问题讨论】:
有趣。您能否提供此声明的参考资料? 【参考方案1】:对于某些任务,3.5 CLR 似乎确实更快。
这是 2.0 与 3.5 的排序差异的相当简单的比较,显示了 .Net 3.5 中的性能改进。
http://systematicgaming.wordpress.com/2009/01/13/performance-c-vs-c-part-2/
究竟是什么导致了这些改进尚不清楚,但结构在 2.0 下没有得到很好的处理,而内联在 3.5 中得到了改进,这两者在适当的情况下都会产生很大的不同。
【讨论】:
【参考方案2】:我听说 3.5 JIT 内联函数和命令比 2.0 更智能,这确实有助于内存交换。
如果您对版本之间的具体时间安排感到好奇,您可能希望自己使用(许多).NET Profiler 之一进行测试。它们对于测量每个函数的 CPU 时间和垃圾收集器中的内存交换非常有用。
CLR 分析器:http://www.microsoft.com/Downloads/details.aspx?FamilyID=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en
dotTrace(非常好但付费;10 天试用期):http://www.jetbrains.com/profiler/
【讨论】:
【参考方案3】:如果不对仍然基于 2.0 的 CLR 进行大修,核心计算功能似乎不太可能看到任何重大的性能改进。但是,我读过报告说 3.5 SP1 显着提高了应用程序的启动时间(更多关于资源分配和初始化,而不是计算速度)。
【讨论】:
【参考方案4】:我知道生成线程实际上已经变慢了。您生成的线程越多,延迟就越长。除了我没有发现任何问题。
【讨论】:
【参考方案5】:3.5 还添加了替换 JITter 的 2.0 SP1,x86 平台获得了能够在值类型上内联函数的好处,因此像 Double.Compare(Double) 这样的方法可以内联。如果您有对此敏感的代码(主要是数字运算),您会在运行时看到很好的加速。
【讨论】:
以上是关于.Net 2.0 与 .Net 3.5 的性能对比的主要内容,如果未能解决你的问题,请参考以下文章
将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?