CLR 2.0 vs 4.0性能?

如果运行unden CLR 4.0,为CLR 2.0编译的.NET程序运行速度会更快吗?

的app.config:

       

通常,不 – 它将是相同的。

默认情况下,CLR 4运行时将加载CLR 2运行时以执行CLR 2代码库。 强制在CLR 4下执行需要在app.Config中设置useLegacyV2RuntimeActivationPolicy

如果添加该标志,则它将在CLR的v4中运行。 通常,性能可能非常相似,但由于JIT和核心运行时的更改,它可能与新运行时略有不同。 无法保证CLR 4会更快 – 有时可能会更慢,但总的来说,我认为在两个运行时间下性能都非常接近。

如果您遇到性能问题,请分析您的应用程序。 更改运行时不会解决性能问题。 但是,在两者下运行时分析应用程序将是了解它是否对您有所帮助的唯一方法。

一般来说,并不明显。 运行时都是向后兼容的,旧版本中的AFAIK库只有在语言规范发生变化时才会被修改(例如添加协方差/逆变支持),或者它被识别为真正的内存/ CPU猪。

通常:

有一些极端情况是性能得到改善,即如果应用程序充斥着ThreadPool的小部分工作,那么工作窃取ThreadPool优化将是一个巨大的胜利。 这也可能会显着改变工作的顺序,因此一些意外依赖订购的应用程序可能会崩溃。

背景GC (med-large object compacting)和Interop(对象锁定更改)中存在类似的角点情况。

摘要

如果.NET 3.5(CLR 2.x)应用程序的性能比预期的差,那么尝试使用.NET 4.5(CLR 4.x)上的应用程序。