Unexpected acceleration of work of .NET Framework 4.5

Over the past few months, I have been working with an intensive processor that I wrote in C # called Zeros6.

The approximate time elapsed to date is 157 days, and the total processor time is 1217 days. [Some information about the computer: Intel Core i7 2600 / 3.4 GHz / 4 cores + hyperthreading → 8 processors.]

I wrote a program using Visual Studio Express 2010 and version 4 of the .NET Framework (I think).

In any case, today I decided to install Visual Studio Express 2012. The installer installed version 4.5 of the .NET Framework, and then requested a reboot to continue the installation. I stopped Zeros6 and restart the computer. After the reboot, Zeros6 restarts automatically, as usual, and the installation of Visual Studio continued and soon finished. Then I was shocked to find that Zeros6 was much faster than usual. The speed indicator, which is usually fairly stable at 5.5 (picoseconds per digit), dropped to 2.0 - I have never seen it below 5.34. Then I stopped and started the program several times, and restart the computer again, but the speed improvement continues to persist. If we call the old speed 100% the new speed 275%!

I am curious to know what is going on.

Some announcements ...

uint[] digits;  
uint   startI;  
uint   stopI;  
public static readonly int  bigPowerIncrement = 34;  
public static readonly uint myBase = 1000000000;  

8 ...

  {
    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;
  }
+5
1

, , .NET 4.5 . .NET 4, .

h.specials [h.specialCount ++] = i;

h.specials ConcurrentDictionary<T,U>, , . ConcurrentDictionary<T,U> .NET 4.5.

JIT, , , .

+2

All Articles