From 5dad0de995a94b9dd2e6d41d4e9843868aa535f7 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:23:00 +0300 Subject: [PATCH 1/3] perf: Adjust garbage collector * Decrease max collection time by 10 times, to 0.1 second. * Make it run 12 times more often (60 > 5 seconds). * Make it run every 150 frames, instead of seconds. * Add current GC pass number into the debug/log. --- objects/obj_garbage_collector/Create_0.gml | 2 +- objects/obj_garbage_collector/Step_0.gml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/objects/obj_garbage_collector/Create_0.gml b/objects/obj_garbage_collector/Create_0.gml index 3e47b71d00..aa9266a6f3 100644 --- a/objects/obj_garbage_collector/Create_0.gml +++ b/objects/obj_garbage_collector/Create_0.gml @@ -1,4 +1,4 @@ gc_timer = 0; gc_enable(false); -gc_target_frame_time(1000000); +gc_target_frame_time(100000); diff --git a/objects/obj_garbage_collector/Step_0.gml b/objects/obj_garbage_collector/Step_0.gml index 253ef12e68..a89976b518 100644 --- a/objects/obj_garbage_collector/Step_0.gml +++ b/objects/obj_garbage_collector/Step_0.gml @@ -1,18 +1,18 @@ if (gc_timer > 0) { - gc_timer -= delta_time/1000000; + gc_timer -= 1; // show_debug_message($"obj_garbage_collector: gc_timer = {gc_timer}"); } else { - gc_timer = 60; + gc_timer = 150; gc_collect(); wait_and_execute(0, function(){ var _gc_stats = gc_get_stats(); - var _gc_touched = $"GC: Objects Touched: {_gc_stats.objects_touched}"; - var _gc_collected = $"GC: Objects Collected: {_gc_stats.objects_collected}"; - var _gc_traversal_t = $"GC: Traversal Time: {_gc_stats.traversal_time} μs"; - var _gc_collection_t = $"GC: Collection Time: {_gc_stats.collection_time} μs"; + var _gc_touched = $"(GC{_gc_stats.gc_frame}) Objects Touched: {_gc_stats.objects_touched}"; + var _gc_collected = $"(GC{_gc_stats.gc_frame}) Objects Collected: {_gc_stats.objects_collected}"; + var _gc_traversal_t = $"(GC{_gc_stats.gc_frame}) Traversal Time: {_gc_stats.traversal_time} μs"; + var _gc_collection_t = $"(GC{_gc_stats.gc_frame}) Collection Time: {_gc_stats.collection_time} μs"; var _gc_lines = [_gc_touched, _gc_collected, _gc_traversal_t, _gc_collection_t]; - show_debug_message_time($"GC: Garbage Collected!"); + show_debug_message_time($"(GC{_gc_stats.gc_frame}) Garbage Collected!"); array_foreach(_gc_lines, debugl); }); } \ No newline at end of file From c130a80128a7ec1bdeea409ba36b809f15c30c0b Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Tue, 19 Nov 2024 00:40:26 +0300 Subject: [PATCH 2/3] Don't show debug lines and add separators --- objects/obj_garbage_collector/Step_0.gml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/objects/obj_garbage_collector/Step_0.gml b/objects/obj_garbage_collector/Step_0.gml index a89976b518..bc46977f08 100644 --- a/objects/obj_garbage_collector/Step_0.gml +++ b/objects/obj_garbage_collector/Step_0.gml @@ -12,7 +12,9 @@ if (gc_timer > 0) { var _gc_traversal_t = $"(GC{_gc_stats.gc_frame}) Traversal Time: {_gc_stats.traversal_time} μs"; var _gc_collection_t = $"(GC{_gc_stats.gc_frame}) Collection Time: {_gc_stats.collection_time} μs"; var _gc_lines = [_gc_touched, _gc_collected, _gc_traversal_t, _gc_collection_t]; - show_debug_message_time($"(GC{_gc_stats.gc_frame}) Garbage Collected!"); + // show_debug_message_time($"(GC{_gc_stats.gc_frame}) Garbage Collected!"); + debugl("============"); array_foreach(_gc_lines, debugl); + debugl("============"); }); } \ No newline at end of file From 5cb6919bada11c6c25b0669ae195a8ebac85d184 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Tue, 19 Nov 2024 00:52:07 +0300 Subject: [PATCH 3/3] Add comments and lower timer by 50 frames --- objects/obj_garbage_collector/Create_0.gml | 2 +- objects/obj_garbage_collector/Step_0.gml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/objects/obj_garbage_collector/Create_0.gml b/objects/obj_garbage_collector/Create_0.gml index aa9266a6f3..28d3bb326a 100644 --- a/objects/obj_garbage_collector/Create_0.gml +++ b/objects/obj_garbage_collector/Create_0.gml @@ -1,4 +1,4 @@ gc_timer = 0; gc_enable(false); -gc_target_frame_time(100000); +gc_target_frame_time(100000); // Default is 100; in microseconds; diff --git a/objects/obj_garbage_collector/Step_0.gml b/objects/obj_garbage_collector/Step_0.gml index bc46977f08..8c4a4a0afa 100644 --- a/objects/obj_garbage_collector/Step_0.gml +++ b/objects/obj_garbage_collector/Step_0.gml @@ -2,7 +2,7 @@ if (gc_timer > 0) { gc_timer -= 1; // show_debug_message($"obj_garbage_collector: gc_timer = {gc_timer}"); } else { - gc_timer = 150; + gc_timer = 100; // Default is every frame, so de-facto 1; gc_collect(); wait_and_execute(0, function(){