extends SceneTree const E = preload("res://world/owniverse/math/exact.gd") func _initialize(): call_deferred("run") func run(): for scenario in ["ordinary", "hypergiants"]: var world = load("res://world/owniverse/owniverse.gd").new() world.catalog.load_definitions(root.get_node("Global").OwniverseEntities) for id in world.catalog.entities: world.state.amount[id] = 0 world.state.stats.total_amount[id] = 0 var group: String = world.catalog.entities[id].group_as if group != "": world.state.amount[group] = 0 world.state.stats.total_amount[group] = 0 world.speed = 6 world.state.amount.S = E.of("1e24") world.state.amount.H = E.of("1e24") for entry in [["RD", 1234567], ["YD", 765432], ["STN", 654321]]: world.state.amount[entry[0]] = entry[1] world.batches.append_batch(world.state, entry[0], entry[1], 0, 0) if scenario == "hypergiants": world.state.amount.HG = E.of("1e20") world.batches.append_batch(world.state, "HG", E.of("1e20"), 0, 0) var start_year = E.subtract(world.catalog.entities.HG.lifespan, 1000) world.state.time = {"datetime": start_year, "year": start_year} var samples: Array = [] var total: int = 0 for frame in 600: var started: int = Time.get_ticks_usec() world.evolute(1.0 / 60.0) var duration: int = Time.get_ticks_usec() - started samples.append(duration) total += duration samples.sort() print("Speed 6 %s: 600 frames, mean %.3f ms, p95 %.3f ms, max %.3f ms, %.1f cycles/sec" % [scenario, total / 600000.0, samples[569] / 1000.0, samples.back() / 1000.0, 600000000.0 / total]) for entity in world.catalog.entities.values(): entity.free() world.free() quit()