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
This commit is contained in:
LemonInTheDark
2021-11-04 20:09:34 -04:00
committed by GitHub
parent 2138a15acd
commit f37c877160
3 changed files with 27 additions and 1 deletions
+1 -1
View File
@@ -158,7 +158,7 @@
#define INIT_ORDER_PATH -50
#define INIT_ORDER_EXPLOSIONS -69
#define INIT_ORDER_STATPANELS -98
#define INIT_ORDER_DEMO -99 // o avoid a bunch of changes related to initialization being written, do this last
#define INIT_ORDER_INIT_PROFILER -99 //Near the end, logs the costs of initialize
#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.
// Subsystem fire priority, from lowest to highest priority
@@ -0,0 +1,25 @@
#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
+1
View File
@@ -364,6 +364,7 @@
#include "code\controllers\subsystem\icon_smooth.dm"
#include "code\controllers\subsystem\id_access.dm"
#include "code\controllers\subsystem\idlenpcpool.dm"
#include "code\controllers\subsystem\init_profiler.dm"
#include "code\controllers\subsystem\input.dm"
#include "code\controllers\subsystem\ipintel.dm"
#include "code\controllers\subsystem\job.dm"