extends SceneTree # Not a test - a stopwatch. Splits the fixed cost every scene-based test pays # before it can assert anything, so tuning aims at the part that is actually # expensive. # godot --headless -s res://tests/_profile_startup.gd var scene: Node var t0: int = 0 var frames: int = 0 var frame_start: int = 0 func _initialize() -> void: var boot: int = Time.get_ticks_msec() print("engine boot to _initialize: %d ms" % boot) t0 = Time.get_ticks_msec() var packed: PackedScene = load("res://Main.tscn") print("load(Main.tscn): %d ms" % (Time.get_ticks_msec() - t0)) t0 = Time.get_ticks_msec() scene = packed.instantiate() print("instantiate(): %d ms" % (Time.get_ticks_msec() - t0)) t0 = Time.get_ticks_msec() root.add_child(scene) print("add_child() (_ready): %d ms" % (Time.get_ticks_msec() - t0)) frame_start = Time.get_ticks_msec() func _process(_delta: float) -> bool: frames += 1 if frames < 60: return false var span: int = Time.get_ticks_msec() - frame_start print("60 frames: %d ms (%.1f fps)" % [span, 60000.0 / maxf(span, 1)]) quit(0) return true