mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 02:51:41 +00:00
* Splits init profiles into a seperate log file (#62545) * Splits init profiles into their own file, so we can better track where pain points come from. After all there's no point in knowing that sprite sheets generate 32 seconds of overtime during init if you only care about inround, or vis versa. (I'm tired of people freaking out about blends that are only done during init) * Whoops * Splits init profiles into a seperate log file Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
26 lines
1.0 KiB
Plaintext
26 lines
1.0 KiB
Plaintext
#define INIT_PROFILE_NAME "init_profiler.json"
|
|
|
|
///Subsystem exists so we can seperately log init time costs from the costs of general operation
|
|
///Hopefully this makes sorting out what causes problems when easier
|
|
SUBSYSTEM_DEF(init_profiler)
|
|
name = "Init Profiler"
|
|
init_order = INIT_ORDER_INIT_PROFILER
|
|
flags = SS_NO_FIRE
|
|
|
|
/datum/controller/subsystem/init_profiler/Initialize()
|
|
if(CONFIG_GET(flag/auto_profile))
|
|
write_init_profile()
|
|
return ..()
|
|
|
|
/datum/controller/subsystem/init_profiler/proc/write_init_profile()
|
|
var/current_profile_data = world.Profile(PROFILE_REFRESH, format = "json")
|
|
CHECK_TICK
|
|
|
|
if(!length(current_profile_data)) //Would be nice to have explicit proc to check this
|
|
stack_trace("Warning, profiling stopped manually before dump.")
|
|
var/prof_file = file("[GLOB.log_directory]/[INIT_PROFILE_NAME]")
|
|
if(fexists(prof_file))
|
|
fdel(prof_file)
|
|
WRITE_FILE(prof_file, current_profile_data)
|
|
world.Profile(PROFILE_CLEAR) //Now that we're written this data out, dump it. We don't want it getting mixed up with our current round data
|