I think this is just because V9 and later uses 64-bit machine integers, so there is twice as much data to handle compared to V8 which is limited to 32-bit machine integers even on 64-bit platforms.
What would be the timing if this example were run in the 32-bit Windows kernel (found under Mathematica\10.0\SystemFiles\Kernel\Binaries\Windows\MathKernel.exe)?
My investigation started with an M9 program that I benchmarked and published on RosettaCode.org. After I installed M10 (and uninstalled M9 in the process) the program was much slower.
The facts are clear. M10 is slower. M10 needs a fix. If you have a 32 bit kernel go ahead and test.
The Mathematica installation includes both 32-bit and 64-bit kernels, so one can try both. This particular operation is as fast in the 32-bit V10 kernel as it was in V8.
Obviously there is some tradeoff, but 64-bit integers allow for computations with much larger arrays and expressions, up to any amount of installed memory that were simply inconceivable before.
The above comparison with V8 performance is as expected: 64-bits integers are twice as heavy as 32-bit integers. However, it does not explain why your program would run slower with V10 than V9.
You’re right that M8 is 32-bit. In fact the ByteCount[data] confirms it. I was focused on problems with the system running out of physical memory, hence the need for Clear[data]. The system can appear to freeze on successive runs when using virtual memory.
Not a misprint; I tested all three versions on the same machine. Notice that I changed the problem so as to use integers larger than 32 bit but smaller than 64. This means that version 8 cannot work with packed arrays whereas the later versions can do so.
Hello all, how can I run a notebook created in mathematica 8, in a win7 64bit pc with mathematica 10.3, in 32 bit and not 64 bit?
M10 seems indeed much slower than M8.