But if the cost of skipping some entities exceeds the cost of just processing it anyway then it's worth to just process it all anyway.Nemo4809 wrote: Wed Feb 19, 2020 5:15 pmI think part of the complication is the skipping of processing certain entities - an optimization. This makes memory pre-fetch effectively useless as the next inserter to be updated could be the next in the array or +5 down the array and you are back to waiting for RAM.mrvn wrote: Wed Feb 19, 2020 12:46 pmPut the inserters into an array and you remove the latency for looking up the next pointer. This then also allows splitting the array into threads (provided you do a few other things to make that possible too)
For example using an alive linked list is very costly per computed entity because of the cache trashing. And when the processing of sleeping entities is cheap enough then it may be worth to just loop over the array instead to take advantage of the prefetch available to it.