【问题标题】:Performance of .Net 2.0 vs .Net 3.5.Net 2.0 与 .Net 3.5 的性能对比
【发布时间】:2010-10-05 14:07:44
【问题描述】:

Microsoft 声称 .Net 3.5 框架比 2.0 有许多速度改进。有没有人能够验证此声明?

我对计算类型的东西(数学、图形等)特别感兴趣,但也更普遍?

【问题讨论】:

  • 有趣。您能否提供此声明的参考资料?

标签: .net-3.5 .net-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) 这样的方法可以内联。如果您有对此敏感的代码(主要是数字运算),您会在运行时看到很好的加速。

          【讨论】:

            猜你喜欢
            • 2012-03-06
            • 2011-06-23
            相关资源
            最近更新 更多