Am I misreading the second example's algorithm? Isn't it allocating like this:
1, 2, 4 3, 8 7 6 5, 16 15 14 13 12 11 10 9, ...
And so on?
---
Also this part:
>Cache lines are typically 64-bytes
Right, but I thought when you access an index it caches quite a lot more than 64 bytes from the index. Doesn't it throw a larger chunk of the array onto multiple lines? If that's the case then the first example is making very efficient use of the cache. If the modern CPUs are smart enough to cache backwards and I understand the second example, isn't the second too?
1, 2, 4 3, 8 7 6 5, 16 15 14 13 12 11 10 9, ...
And so on?
---
Also this part:
>Cache lines are typically 64-bytes
Right, but I thought when you access an index it caches quite a lot more than 64 bytes from the index. Doesn't it throw a larger chunk of the array onto multiple lines? If that's the case then the first example is making very efficient use of the cache. If the modern CPUs are smart enough to cache backwards and I understand the second example, isn't the second too?