From 2040c5a72056c55a4e86f0aba2e2c908b4c003fe Mon Sep 17 00:00:00 2001 From: Mloc-Hibernia Date: Wed, 30 Apr 2014 09:56:55 +0000 Subject: [PATCH] controllers: make process_machines more profilable Splits process_machines() into 3 procs for its actions, trying to figure out which is causing the lagspikes. Signed-off-by: Mloc-Hibernia --- code/controllers/master_controller.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 28b875d0b7..34b4a045f7 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -254,6 +254,10 @@ datum/controller/game_controller/proc/process_diseases() active_diseases.Cut(i,i+1) datum/controller/game_controller/proc/process_machines() + process_machines_process() + process_machines_power() + process_machines_rebuild() +datum/controller/game_controller/proc/process_machines_process() var/i = 1 while(i<=machines.len) var/obj/machinery/Machine = machines[i] @@ -265,7 +269,8 @@ datum/controller/game_controller/proc/process_machines() continue machines.Cut(i,i+1) - i=1 +datum/controller/game_controller/proc/process_machines_power() + var/i=1 while(i<=active_areas.len) var/area/A = active_areas[i] if(A.powerupdate && A.master == A) @@ -283,15 +288,13 @@ datum/controller/game_controller/proc/process_machines() A.powerupdate = 0 active_areas.Cut(i,i+1) - +datum/controller/game_controller/proc/process_machines_rebuild() if(controller_iteration % 150 == 0 || rebuild_active_areas) //Every 300 seconds we retest every area/machine for(var/area/A in all_areas) if(A == A.master) A.powerupdate += 1 active_areas |= A rebuild_active_areas = 0 - - datum/controller/game_controller/proc/process_objects()