On Friday, 15 November 2013 at 14:08:20 UTC, bearophile wrote:
The situation is a little more complex, there is a capacity field that I think is kept in a cold place of the array, it's also cached, but only if you append to just one array, etc.

An alternative might be hold an array and manage a slice to that array. "Appending" would just be reslicing the array.

If the array is long you are accessing a cold part of it to swap with the end.

Sure. But on a long array, the time taken to iterate over the entire array looking for a dead particle to recycle would take time as well. Not to mention that removing the dead particle by swapping it with the end would likely keep the overall array smaller and, thus, more likely to fit completely in the cache. There's a lot to be said about keeping memory usage as compact as possible.

Is there any empirical data to suggest either approach is better? There's factors that could suggest either one might be faster depending on the situation.

Reply via email to