|
|
|
|
|
by bananaface
2172 days ago
|
|
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? |
|
>>> main(20)
2 4 8 16 12 4 8 16 12 4 8 16 12 4 8 16 12 4 8 16
It's not even hitting odd indexes. Over half the array will be garbage at the end. I guess that would count as out-of-order though.