如果运行unden CLR4.0,为CLR2.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>发布于 2011-01-14 05:20:18
通常情况下,不会-它将是相同的。
默认情况下,CLR 4运行时将加载CLR 2运行时来执行CLR 2代码库。在CLR4下强制执行需要在app.Config中设置useLegacyV2RuntimeActivationPolicy。
如果您添加了该标志,那么它将在CLR v4中运行。一般来说,性能可能非常相似,但由于JIT和核心运行时的变化,新的运行时可能会略有不同。不能保证CLR 4会更快-它有时可能会更慢,尽管一般来说,我预计在这两个运行时下的性能会非常接近。
如果您有性能问题,请分析您的应用程序。更改运行时不会修复性能问题。然而,在两者下运行时分析您的应用程序将是了解它是否对您有影响的唯一方法。
发布于 2011-01-14 05:20:24
一般来说,不是很明显。运行时都是向后兼容的,在旧版本中找到的AFAIK库仅在语言规范更改(例如,添加协方差/逆方差支持)或被标识为实际内存/CPU占用时才会被修改。
发布于 2013-05-25 03:04:53
通常:No。
有几个性能得到改善的情况,即如果应用程序用小工作淹没ThreadPool,那么窃取工作的ThreadPool优化将是一个巨大的胜利。这也可能会显著改变工作的执行顺序,因此一些意外依赖于排序的应用程序可能会崩溃。
在后台、GC、(中大型对象压缩)和互操作(对象锁定更改)中也有类似的情况。
摘要
如果.NET 3.5 (CLR2.x)应用程序的性能比预期差,那么可以在.NET 4.5 (CLR4.x)上尝试该应用程序。
https://stackoverflow.com/questions/4685345
复制相似问题