繁体   English   中英

CLR 2.0 vs 4.0性能?

[英]CLR 2.0 vs 4.0 performance?

如果运行无限制的CLR 4.0,为CLR 2.0编译的.NET程序会运行得更快吗?

app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

通常,不-它是相同的。

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

如果添加该标志,则它将在CLR的v4中运行。 通常,性能可能非常相似,但是由于JIT和核心运行时的变化,它与新的运行时可能会略有不同。 无法保证CLR 4会更快-有时可能会慢一些,尽管总的来说,我希望两种运行时的性能都非常接近。

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

通常:

在一些极端的情况下 ,性能得到了改善,例如,如果应用程序用少量的工作充斥ThreadPool,那么窃取ThreadPool的优化将是一个巨大的胜利。 这也可能会显着改变工作的执行顺序,因此某些不小心依赖于订购的应用程序可能会崩溃。

在后台GC (大对象压缩)和Interop(对象锁定更改)中,也存在类似的极端情况。

摘要

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

一般来说,并不明显。 运行时都向后兼容,并且仅在语言规范发生更改(例如添加协方差/逆方差支持)或将其标识为真正的内存/ CPU时,才修改在旧版本中找到的AFAIK库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM