mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01: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
This commit is contained in:
@@ -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
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user