Files
cards/tests/perf_probe.gd
team3 a11cee2e0a
Some checks failed
Tests / headless (push) Has been cancelled
Tests / fenster-schnell (push) Has been cancelled
Tests / fenster-voll (push) Has been cancelled
Tests / balance (push) Has been cancelled
update
2026-10-10 14:30:29 +02:00

43 lines
1.6 KiB
GDScript

extends SceneTree
## Laufzeitmessung: Start, KI-Entscheidungen, Deckerzeugung, Vorschau, Musik.
func ms(f: Callable, n: int = 1) -> float:
var t0 := Time.get_ticks_usec()
for i in n:
f.call()
return (Time.get_ticks_usec() - t0) / 1000.0 / n
func _initialize() -> void:
var t := ms(func(): Cards.all())
print("Kartenpool laden: %.1f ms" % t)
var r := RandomNumberGenerator.new()
r.seed = 3
print("Stapel würfeln: %.2f ms" % ms(func(): DeckGen.random_deck(r), 20))
print("Gegner erzeugen: %.2f ms" % ms(func(): DeckGen.random_opponent(), 20))
for n in [1]:
var g := Game.new_battle(r)
# ein volles Brett für alle, damit die Entscheidung teuer wird
var uid := 5000
for p in g.players:
for k in 4:
var c := Game.Creature.new(Cards.by_id("f_3_2"), p, uid)
uid += 1
c.ready = true
p.board.append(c)
var h: Game.Player = g.players[0]
h.energy = 10
h.max_energy = 10
for k in 6:
h.hand.append(Cards.by_id("f_4_3"))
AI.time_budget_ms = 100000
var t_full := ms(func(): AI.choose_action(g, h))
AI.time_budget_ms = 150
var t_budget := ms(func(): AI.choose_action(g, h))
var cands := AI.candidate_actions(g, h).size()
print("KI-Entscheidung, %d Gegner, %d Kandidaten: ohne Budget %.0f ms, mit Budget %.0f ms" % [n, cands, t_full, t_budget])
print("Spielkopie: %.3f ms" % ms(func(): Game.new_battle(r).clone(), 20))
print("Musik erzeugen (läuft im Hintergrund-Thread): %.0f ms" % ms(func(): Sfx.new()._music()))
quit()