首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET Framework4.5上意外的加速

.NET Framework4.5上意外的加速
EN

Stack Overflow用户
提问于 2012-09-17 23:04:47
回答 1查看 1.1K关注 0票数 5

在过去的几个月里,我一直在运行一个处理器密集型程序,我用C#编写了这个程序,名为Zeros6。

到目前为止,大约经过的时间是157天,总处理器时间是1 217天。计算机的一些细节: Intel Core i7 2600 / 3.4 GHz /4核+超线程-> 8处理器。

我使用2010和.NET框架的第4版编写了这个程序(我认为)。

无论如何,今天我决定安装2012。安装程序安装了.NET框架的4.5版本,然后请求重新启动以继续安装。我停止了Zeros6程序,OKed重新启动。在重新启动之后,Zeros6像往常一样自动重新启动,Visual安装继续进行,很快就完成了。然后,我震惊地发现,Zeros6的运行速度比通常运行的要快得多。一个速度指示器,通常是相当稳定的5.5 (每位数皮秒)下降到2.0 -我从未见过它低于5.34。然后我停止并启动了几次程序,并重新启动了计算机,但速度的提高仍在继续。如果我们称旧速度为100%,则新速度为275%!

我很想知道发生了什么事。

一些声明..。

代码语言:javascript
复制
uint[] digits;  
uint   startI;  
uint   stopI;  
public static readonly int  bigPowerIncrement = 34;  
public static readonly uint myBase = 1000000000;  

所有8个处理器大部分时间都在做这个.

代码语言:javascript
复制
  {
    ulong carry = 0;
    unchecked
    {
      for (uint i = startI; i < stopI; i++)
      {
        ulong m = ((ulong)digits[i] << bigPowerIncrement) | carry;
        carry = m/myBase;
        if ((digits[i] = (uint)(m - myBase*carry)) < 1000000)
        { // do this about one time in 1000...
          h.specials[h.specialCount++] = i;
        }
      } // i loop
    } // unchecked
    h.carry = carry;
  }
EN

回答 1

Stack Overflow用户

发布于 2012-09-17 23:09:37

很难确切地知道什么改进了,但是.NET 4.5中有相当多的改进。由于这是对.NET 4的就地升级,您将从这些改进中获益。

h.specialsh.specialCount++ = i;

例如,如果h.specials是一个ConcurrentDictionary<T,U>,那么这本身就可能是一个改进。ConcurrentDictionary<T,U>类型在.NET 4.5中得到了显著改善。

它也可以是一个新的或改变了的JIT优化,它现在正在使您受益,这是以前没有的,或者是许多其他事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12468267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档