Files
S.P.L.U.R.T-Station-13/code
LemonInTheDark b478367fd9 Saves on average 10 seconds from roundstart times (#71730)
## About The Pull Request

When runlevels change mid work, subsystems running behind have their
next_fire updated.
It's offset by a sum of random numbers, so things don't bunch up,
especially KEEPTIME SSs

The trouble is we have so many subsystems that get added at roundstart
that this offset gets LARGE, like 10 seconds on average.

So instead of randomly offsetting, why not "fill" a set of time slots?
Only 1 keeptime subsystem a tick, and 4 others. Then we just fill up
those buckets and get to it (also don't offset things that are already
processing)

I've talked to mso a bit about this. What he reccomended was sampling a
random time withing a 2 second window.
I'm not totally sure why, kinda waiting for him to tell me off, if he
does I'll fix things up.

This pattern takes the max possible delay from 16 (76 * 5 / 20)) seconds
to 0.7 (56 / 4 / 20)
It obviously scales with subsystem count, but I like this scaling a bit
better

I've applied the same pattern to the offsetting we do at the start of
Loop(), for ticker subsystems. I am less confident in this, it does take
last fire times from at worst 3.75 seconds (15 * 5 / 20) to a static
0.75 (15 / 20)
As stated I'm less sure of this, hoping to get mso'd so I can clean
things up

## Why It's Good For The Game

Makes roundstart snappier

## Changelog
🆑
code: Roundstart "starting" should be much snappier now
/🆑

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2024-10-21 00:30:59 -04:00
..
2024-04-12 22:01:03 -03:00
2024-08-24 21:28:55 -03:00
2024-08-12 19:57:35 -03:00
2024-08-25 04:38:03 -03:00
2024-10-15 00:41:11 -04:00
2024-03-30 23:29:30 +11:00
2024-04-12 22:01:03 -03:00