pyanodon / pybugreports

Central bug-report repository for pymods
The Unlicense
5 stars 1 forks source link

Tearing down power poles creates noticeable update time spikes (Probably Aerial-Turbines-related) #581

Open EigensheepLambda opened 4 weeks ago

EigensheepLambda commented 4 weeks ago

Mod source

Factorio Mod Portal

Operating system

=Windows 10

What kind of issue is this?

What is the problem?

image

I assume but haven't tested that this is dependent on having a lot of power poles, so it only shows up in large bases. My understanding is that this is the logic building the power pole network state for the aerial turbines to use in their pathing. The main annoyance in practice is when cut&pasting a build, the lag spike from the cut likes to hit just as I'm attempting to paste and ends up making me place things incorrectly.

Is it possible to break this computation up across multiple ticks like some other heavy lifting processes do? Or is the initial query for all power poles the expensive part and there's no avoiding it?

A second possible solution that I don't especially like is to skip the calculation if no aerial turbines exist in the air, and have it instead execute when deploying a first blimp (and then as usual). This would make it possible to avoid the performance hit by giving them up in the late game. Or by grounding them before a building task and relaunching them afterwards (a reason to use the base station and the combinator logic it exposes). I love my blimps, but...

Steps to reproduce

No response

Additional context

No response

Log file

No response

oorzkws commented 3 weeks ago

A bit ironically, the spike hitting a little later when it's inconvenient is the result of the deferral. I've considered splitting it across ticks, though that introduces cases where the network is modified while we're attempting to iterate it - the reason I hadn't split it.

I think if you're seeing stutters it's fair that I revisit that and see what can be done