Skip to content

Commit 9205213

Browse files
committed
Improve benchmarking
1 parent ee8efea commit 9205213

File tree

3 files changed

+37
-32
lines changed

3 files changed

+37
-32
lines changed

benchmarks/main.py

+17-11
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,26 @@ def print_benchmark_results(name: str, timings: list[float]):
1313
print(f"FPS: {1 / np.mean(timings):.2f}")
1414

1515

16-
def main(n_tests: int = 10, sim_steps: int = 10, multi_drone: bool = False):
16+
def main(
17+
n_tests: int = 2,
18+
number: int = 100,
19+
multi_drone: bool = False,
20+
reset: bool = True,
21+
step: bool = True,
22+
):
1723
reset_fn, step_fn = time_sim_reset, time_sim_step
1824
if multi_drone:
1925
reset_fn, step_fn = time_multi_drone_reset, time_multi_drone_step
20-
timings = reset_fn(n_tests=n_tests)
21-
print_benchmark_results(name="Sim reset", timings=timings)
22-
timings = step_fn(n_tests=n_tests, sim_steps=sim_steps)
23-
print_benchmark_results(name="Sim steps", timings=timings / sim_steps)
24-
timings = step_fn(n_tests=n_tests, sim_steps=sim_steps, physics_mode="sys_id")
25-
print_benchmark_results(name="Sim steps (sys_id backend)", timings=timings / sim_steps)
26-
timings = step_fn(n_tests=n_tests, sim_steps=sim_steps, physics_mode="mujoco")
27-
print_benchmark_results(name="Sim steps (mujoco backend)", timings=timings / sim_steps)
28-
timings = step_fn(n_tests=n_tests, sim_steps=sim_steps, physics_mode="sys_id")
29-
print_benchmark_results(name="Sim steps (sys_id backend)", timings=timings / sim_steps)
26+
if reset:
27+
timings = reset_fn(n_tests=n_tests, number=number)
28+
print_benchmark_results(name="Sim reset", timings=timings / number)
29+
if step:
30+
timings = step_fn(n_tests=n_tests, number=number)
31+
print_benchmark_results(name="Sim steps", timings=timings / number)
32+
timings = step_fn(n_tests=n_tests, number=number, physics_mode="sys_id")
33+
print_benchmark_results(name="Sim steps (sys_id backend)", timings=timings / number)
34+
# timings = step_fn(n_tests=n_tests, number=number, physics_mode="mujoco")
35+
# print_benchmark_results(name="Sim steps (mujoco backend)", timings=timings / number)
3036

3137

3238
if __name__ == "__main__":

benchmarks/profile.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
def main():
10-
config = load_config(Path(__file__).parents[1] / "config/level0.toml")
10+
config = load_config(Path(__file__).parents[1] / "config/level3.toml")
1111
env = gymnasium.make("DroneRacing-v0", config=config)
1212
env.reset()
1313
for _ in range(1_000):

benchmarks/sim.py

+19-20
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
env.reset()
3737
env.step(env.action_space.sample()) # JIT compile
3838
env.reset()
39+
env.action_space.seed(42)
40+
action = env.action_space.sample()
3941
"""
4042

4143
attitude_env_setup_code = """
@@ -57,14 +59,16 @@
5759
env.reset()
5860
env.step(env.action_space.sample()) # JIT compile
5961
env.reset()
62+
env.action_space.seed(42)
63+
action = env.action_space.sample()
6064
"""
6165

6266
load_multi_drone_config_code = f"""
6367
from pathlib import Path
6468
6569
from lsy_drone_racing.utils import load_config
6670
67-
config = load_config(Path('{Path(__file__).parents[1] / "config/multi_level0.toml"}'))
71+
config = load_config(Path('{Path(__file__).parents[1] / "config/multi_level3.toml"}'))
6872
"""
6973

7074
multi_drone_env_setup_code = """
@@ -87,42 +91,39 @@
8791
env.reset()
8892
env.step(env.action_space.sample()) # JIT compile
8993
env.reset()
94+
env.action_space.seed(2)
9095
"""
9196

9297

93-
def time_sim_reset(n_tests: int = 10) -> NDArray[np.floating]:
98+
def time_sim_reset(n_tests: int = 10, number: int = 1) -> NDArray[np.floating]:
9499
setup = load_config_code + env_setup_code
95100
stmt = """env.reset()"""
96-
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=1, repeat=n_tests))
101+
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=number, repeat=n_tests))
97102

98103

99104
def time_sim_step(
100-
n_tests: int = 10, sim_steps: int = 100, physics_mode: str = "analytical"
105+
n_tests: int = 10, number: int = 1, physics_mode: str = "analytical"
101106
) -> NDArray[np.floating]:
102107
modify_config_code = f"""config.sim.physics = '{physics_mode}'\n"""
103108
setup = load_config_code + modify_config_code + env_setup_code + "\nenv.reset()"
104-
stmt = f"""
105-
for _ in range({sim_steps}):
106-
env.step(env.action_space.sample())"""
107-
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=1, repeat=n_tests))
109+
stmt = """env.step(action)"""
110+
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=number, repeat=n_tests))
108111

109112

110-
def time_sim_attitude_step(n_tests: int = 10, sim_steps: int = 100) -> NDArray[np.floating]:
113+
def time_sim_attitude_step(n_tests: int = 10, number: int = 1) -> NDArray[np.floating]:
111114
setup = load_config_code + attitude_env_setup_code + "\nenv.reset()"
112-
stmt = f"""
113-
for _ in range({sim_steps}):
114-
env.step(env.action_space.sample())"""
115-
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=1, repeat=n_tests))
115+
stmt = """env.step(action)"""
116+
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=number, repeat=n_tests))
116117

117118

118-
def time_multi_drone_reset(n_tests: int = 10) -> NDArray[np.floating]:
119+
def time_multi_drone_reset(n_tests: int = 10, number: int = 1) -> NDArray[np.floating]:
119120
setup = load_multi_drone_config_code + multi_drone_env_setup_code + "\nenv.reset()"
120121
stmt = """env.reset()"""
121-
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=1, repeat=n_tests))
122+
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=number, repeat=n_tests))
122123

123124

124125
def time_multi_drone_step(
125-
n_tests: int = 10, sim_steps: int = 100, physics_mode: str = "analytical"
126+
n_tests: int = 10, number: int = 100, physics_mode: str = "analytical"
126127
) -> NDArray[np.floating]:
127128
modify_config_code = f"""config.sim.physics = '{physics_mode}'\n"""
128129
setup = (
@@ -131,7 +132,5 @@ def time_multi_drone_step(
131132
+ multi_drone_env_setup_code
132133
+ "\nenv.reset()"
133134
)
134-
stmt = f"""
135-
for _ in range({sim_steps}):
136-
env.step(env.action_space.sample())"""
137-
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=1, repeat=n_tests))
135+
stmt = """env.step(env.action_space.sample())"""
136+
return np.array(timeit.repeat(stmt=stmt, setup=setup, number=number, repeat=n_tests))

0 commit comments

Comments
 (0)