On Tuesday, 18 February 2014 at 19:55:20 UTC, Etienne wrote:
On 2014-02-18 1:13 PM, "Casper Færgemand" <shortt...@hotmail.com>" wrote:
On Tuesday, 18 February 2014 at 08:11:04 UTC, Dicebot wrote:
I tested some prime sieves both in C++ and D. They worked fastest with
dynamic arrays with a size matching the L1 cache. I presume the
instructions are located elsewhere in the CPU.

Does that mean ubyte[] = new ubyte[4092] is more likely to end up in the CPU cache than ubyte[4092] or the inverse ?

It is irrelevant. If data is used continiously it will end up in cache anyway (assuming it fits), location does not matter. What is important is if it is already prefetched upon first access, which is more likely for static arrays as they reside in the same memory page as their aggregator. Then it will save you from cache miss upon changing the buffer context frequently.

But if you use the same buffer all the time during continious code flow it shouldn't impact where exactly it is located as it simply won't be removed from cache by newer data.

Reply via email to