I might be misunderstand the electric update... did the game so far really iterate over every (active) electric consumer every tick? I thought for sure they group similar ones together, like they do with solar panels & accumulators! Also since you really want to anyway group factories with the same blueprint, module setup & power grid, since that way you can update the production progress of a bunch of those with a single addition for the entire group (and only individually processing those that actually have finished an item) kinda like described in fff-176 with items transported on belts. Same with inserters... as long as they move from inventory to inventory (chest or factory; not belt or ground) how long that takes seems fully depended on inserter type & energy supply so as long as they have the same energy source they will finish in the same order, thus you can put them in a single queue when they start to move and only take them out once they finish. No iterating over other moving inserters, not even any kind of sorting involved. As usual you would have to put up with more complex source code in favor of performance. For a game like Factorio advertising huge factories those tradeoff might be worth it, especially when we place the same patterns over and over again in out factories.
In general I'd love to have a real profiling session with the game instead of just seeing "entities need 80ms". Anyone got some debug symbols to give Visual Studio?
Or might there even be a way to have a peek at the source code? I'd love to dig around to find reasons for some non obvious quirks. Like why do roboports keep chunks active? I don't see any obvious reason, especially for those currently unused ones that provide bot range at my solar grid. Or how the game avoids iterating over my 18k laser towers to find targets (would just reversing it aka searching for turrets near moving enemies work well enough?). Or how well have they managed to optimize bots. I kinda hope the game doesn't iterate over all of those every tick just to update their position. In most cases you'd probably only need to update them once they run out of energy/arrive at their destination. At least as long as they satisfy a few conditions... stationary target, safe area, offscreen area. And yes, determining those is the challenging, interesting & fun part.