40 lines
1.1 KiB
GDScript3
40 lines
1.1 KiB
GDScript3
|
|
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
|