mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
Micro-optimize icon smoothing subsystem, cutting down more than 50% of its init time (about .8s drop on local, more on prod) (#69741)
With atoms now being 50% of the init time instead of ~80%, I've decided to poke around other subsystems.
Unfortunately they're not straight forward at all and extremely boring. bitmask_smooth() in particular is just a big proc that is called ~60k times, so I made some adjustments to its macro to reduce ops.
I removed code that looped over two entire Z-levels to find things to smooth, added by e2dd404, at a time before the initialize system. This doesn't have huge gains since it just defers to the queue anyway, but it still shaved off 0.1-0.2s on local.
I removed update_appearance(~UPDATE_SMOOTHING) from something since the person who added it doesn't remember why and it doesn't appear to do anything. Lemon thinks it's something to do with emissives, but I tested with neon carpet and it seemed to work fine.
This commit is contained in:
@@ -32,16 +32,13 @@ SUBSYSTEM_DEF(icon_smooth)
|
||||
can_fire = FALSE
|
||||
|
||||
/datum/controller/subsystem/icon_smooth/Initialize()
|
||||
smooth_zlevel(1, TRUE)
|
||||
smooth_zlevel(2, TRUE)
|
||||
|
||||
var/list/queue = smooth_queue
|
||||
smooth_queue = list()
|
||||
|
||||
while(length(queue))
|
||||
var/atom/smoothing_atom = queue[length(queue)]
|
||||
queue.len--
|
||||
if(QDELETED(smoothing_atom) || !(smoothing_atom.smoothing_flags & SMOOTH_QUEUED) || smoothing_atom.z <= 2)
|
||||
if(QDELETED(smoothing_atom) || !(smoothing_atom.smoothing_flags & SMOOTH_QUEUED) || !smoothing_atom.z)
|
||||
continue
|
||||
smoothing_atom.smooth_icon()
|
||||
CHECK_TICK
|
||||
|
||||
Reference in New Issue
Block a user