.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 的机器上运行?

如何将项目从 .NET 3.5 降级到 .NET 2.0?

从 .NET 3.5 转换到 .NET 2.0

.NET 紧凑框架向后兼容 3.5 和 2.0

.NET Frameworks 从 3.5 到 2.0 的向前兼容性

当 Mono 支持 .NET 3.5 时,为啥 Unity 使用 .NET 2.0?