Kaynağa Gözat

memory benchmarking

Snej69420 5 ay önce
ebeveyn
işleme
4fba4bf04f
5 değiştirilmiş dosya ile 386 ekleme ve 294 silme
  1. 21 7
      Agents benchmarks.md
  2. 200 200
      PyPDEVS benchmarks.md
  3. 148 68
      benchmarks/Agents/main.jl
  4. 8 15
      benchmarks/benchmark.py
  5. 9 4
      plotting Agents.md

+ 21 - 7
Agents benchmarks.md

@@ -1,5 +1,5 @@
 # --- TIME ---
-## --- BIG Server Benchmarks ---
+## --- BIG Server mains ---
 ```bash
 nohup julia --project=Agents Agents/main.jl -D 100 --ds 2 -W 100 --ws 2 -r 5 --ms LI -p Results/Agents > Logs/Agents/LI.log 2>&1 & 
 nohup julia --project=Agents Agents/main.jl -D 100 --ds 2 -W 100 --ws 2 -r 5 --ms HI -p Results/Agents > Logs/Agents/HI.log 2>&1 &
@@ -7,16 +7,30 @@ nohup julia --project=Agents Agents/main.jl -D 100 --ds 2 -W 100 --ws 2 -r 5 --m
 nohup julia --project=Agents Agents/main.jl -D 30 --ds 2 -W 30 --ws 2 -r 5 --ms HOmod -p Results/Agents > Logs/Agents/HOmod.log 2>&1 &
 ```
 
-## --- SMALL Local Benchmarks ---
+## --- SMALL Local mains ---
 ```bash
-nohup julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms LI -p Results/Agents -f test > Logs/Agents/LI.log 2>&1 & 
-nohup julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms HI -p Results/Agents -f test > Logs/Agents/HI.log 2>&1 &
-nohup julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms HO -p Results/Agents -f test > Logs/Agents/HO.log 2>&1 &
-nohup julia --project=Agents Agents/main.jl -D 30 -W 30 -r 5 --ms HOmod -p Results/Agents -f test > Logs/Agents/HOmod.log 2>&1 &
+julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms LI -p Results/Agents -f test
+julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms HI -p Results/Agents -f test
+julia --project=Agents Agents/main.jl -D 100 -W 100 -r 5 --ms HO -p Results/Agents -f test
+julia --project=Agents Agents/main.jl -D 30 -W 30 -r 5 --ms HOmod -p Results/Agents -f test
 ```
 
 # --- MEMORY ---
-## ---  ---
+## --- BIG Server mains ---
+``` bash
+nohup julia --project=Agents Agents/main.jl -D 400 -W 400 --ms LI -p Results/Agents -M -i 0.1 > Logs/Agents/Memory/Parallel/LI.log 2>&1 & 
+nohup julia --project=Agents Agents/main.jl -D 400 -W 400 --ms HI -p Results/Agents -M -i 0.1 > Logs/Agents/Memory/Parallel/HI.log 2>&1 &
+nohup julia --project=Agents Agents/main.jl -D 400 -W 400 --ms HO -p Results/Agents -M -i 0.1 > Logs/Agents/Memory/Parallel/HO.log 2>&1 &
+nohup julia --project=Agents Agents/main.jl -D 68 -W 68 --ms HOmod -p Results/Agents -M -i 0.1 > Logs/Agents/Memory/Parallel/HOmod.log 2>&1 &
+```
+
+## --- SMALL Local mains ---
+``` bash
+julia --project=Agents Agents/main.jl -D 400 -W 400 --ms LI -p Results/Agents -M -i 0.1 
+julia --project=Agents Agents/main.jl -D 400 -W 400 --ms HI -p Results/Agents -M -i 0.1
+julia --project=Agents Agents/main.jl -D 400 -W 400 --ms HO -p Results/Agents -M -i 0.1
+julia --project=Agents Agents/main.jl -D 68 -W 68 --ms HOmod -p Results/Agents -M -i 0.1
+```
 
 [//]: # (```bash)
 

+ 200 - 200
PyPDEVS benchmarks.md

@@ -1,257 +1,257 @@
 # --- TIME ---
 ## --- Dynamic ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dLI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dLI-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdLI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdLI-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dHI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dHI-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdHI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdHI-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HI2LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/LI2HI.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dHO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dHO-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdHO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdHO-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dLI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dLI-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdLI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdLI-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dHI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dHI-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdHI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdHI-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HI2LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/LI2HI.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/dHO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/dHO-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/mdHO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/Dynamic/mdHO-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Dynamic/HOmod.log 2>&1 &
 ```
 
 ## --- Dynamic Memoised ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dLI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dLI-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdLI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdLI-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dHI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dHI-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdHI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdHI-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HI2LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/LI2HI.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dHO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dHO-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdHO.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdHO-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dLI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dLI-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdLI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdLI-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dHI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dHI-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdHI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdHI-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HI2LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/LI2HI.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/dHO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/dHO-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/mdHO.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicMemoised/mdHO-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicMemoised/HOmod.log 2>&1 &
 ```
 
 ## --- Dynamic Classic (-C) ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dLI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdLI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dHI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdHI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HI2LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/LI2HI.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dHO-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdHO-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dLI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdLI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dHI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdHI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HI2LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/LI2HI.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/dHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/dHO-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/mdHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -n 2 > Logs/PyPDEVS/DynamicClassic/mdHO-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -C -p Results/PyPDEVS > Logs/PyPDEVS/DynamicClassic/HOmod.log 2>&1 &
 ```
 
 ## --- Dynamic Classic (-C) Memoised ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dLI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdLI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dHI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdHI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HI2LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/LI2HI.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dHO-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdHO-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dLI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdLI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dHI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdHI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI2LI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HI2LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI2HI -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/LI2HI.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/dHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/dHO-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/mdHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -n 2 > Logs/PyPDEVS/DynamicClassicMemoised/mdHO-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -C -p Results/PyPDEVS -f memoised --DCP memoised > Logs/PyPDEVS/DynamicClassicMemoised/HOmod.log 2>&1 &
 ```
 
 ## --- Parallel ---
 ```bash
-nohup uv run testPyPDEVS.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py parallel -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HOmod.log 2>&1 &
+nohup uv run benchmark.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/LI.log 2>&1 & 
+nohup uv run benchmark.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HI.log 2>&1 &
+nohup uv run benchmark.py parallel -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HO.log 2>&1 &
+nohup uv run benchmark.py parallel -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Parallel/HOmod.log 2>&1 &
 ```
 
 ## --- Minimal ---
 ```bash
-nohup uv run testPyPDEVS.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HOmod.log 2>&1 &
+nohup uv run benchmark.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/LI.log 2>&1 &
+nohup uv run benchmark.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HI.log 2>&1 &
+nohup uv run benchmark.py minimal -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HO.log 2>&1 &
+nohup uv run benchmark.py minimal -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Minimal/HOmod.log 2>&1 &
 ```
 
 ## --- Classic ---
 ```bash
-nohup uv run testPyPDEVS.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Classic/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HOmod.log 2>&1 &
+nohup uv run benchmark.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms LI -p Results/PyPDEVS > Logs/PyPDEVS/Classic/LI.log 2>&1 &
+nohup uv run benchmark.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HI -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HI.log 2>&1 &
+nohup uv run benchmark.py classic -D 100 -ds 2 -W 100 -ws 2 -r 5 -ms HO -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HO.log 2>&1 &
+nohup uv run benchmark.py classic -D 30 -ds 2 -W 30 -ws 2 -r 5 -ms HOmod -p Results/PyPDEVS > Logs/PyPDEVS/Classic/HOmod.log 2>&1 &
 ```
 
 # --- MEMORY ---
 ## --- Dynamic ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/LI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dLI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dLI_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdLI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdLI_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dHI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dHI_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdHI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdHI_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI2LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HI2LI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI2HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/LI2HI_M.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dHO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dHO_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdHO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdHO_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HOmod_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/LI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dLI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dLI_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdLI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdLI_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dHI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dHI_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdHI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdHI_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI2LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HI2LI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI2HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/LI2HI_M.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/dHO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/dHO_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/mdHO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/Dynamic/mdHO_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Dynamic/HOmod_M.log 2>&1 &
 ```
 
 ## --- Dynamic Memoised---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/LI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dLI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dLI_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdLI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdLI_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dHI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dHI_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHI_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI2LI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HI2LI_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI2HI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/LI2HI_M.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dHO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dHO_M-2.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHO_M.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHO_M-2.log 2>&1 &
-
-nohup uv run testPyPDEVS.py dynamic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HOmod_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/LI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dLI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dLI_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdLI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdLI_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dHI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dHI_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHI_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI2LI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HI2LI_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI2HI -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/LI2HI_M.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/dHO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/dHO_M-2.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHO_M.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicMemoised/mdHO_M-2.log 2>&1 &
+
+nohup uv run benchmark.py dynamic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicMemoised/HOmod_M.log 2>&1 &
 ```
 
 ## --- Dynamic Classic (-C) ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dLI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdLI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dHI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdHI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI2LI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HI2LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI2HI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/LI2HI.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dHO-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdHO-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 68 -W 68 -ms HOmod -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dLI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdLI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dHI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdHI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI2LI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HI2LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI2HI -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/LI2HI.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/dHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/dHO-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/mdHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassic/mdHO-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 68 -W 68 -ms HOmod -C -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassic/HOmod.log 2>&1 &
 ```
 
 ## --- Dynamic Classic (-C) Memoised ---
 ```bash
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dLI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdLI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdLI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHI-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHI-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HI2LI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HI2LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms LI2HI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/LI2HI.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms HO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHO-2.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHO.log 2>&1 & 
-nohup uv run testPyPDEVS.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHO-2.log 2>&1 & 
-
-nohup uv run testPyPDEVS.py dynamic -D 68 -W 68 -ms HOmod -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HOmod.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/LI.log 2>&1 &
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dLI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdLI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdLI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdLI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHI-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHI-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HI2LI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HI2LI.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms LI2HI -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/LI2HI.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms HO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms dHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/dHO-2.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHO.log 2>&1 & 
+nohup uv run benchmark.py dynamic -D 400 -W 400 -ms mdHO -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 -n 2 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/mdHO-2.log 2>&1 & 
+
+nohup uv run benchmark.py dynamic -D 68 -W 68 -ms HOmod -C -p Results/PyPDEVS -f memoised --DCP memoised -M -i 0.1 > Logs/PyPDEVS/Memory/DynamicClassicMemoised/HOmod.log 2>&1 &
 ```
 
 ## --- Parallel ---
 ```bash
-nohup uv run testPyPDEVS.py parallel -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/LI.log 2>&1 & 
-nohup uv run testPyPDEVS.py parallel -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py parallel -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py parallel -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HOmod.log 2>&1 &
+nohup uv run benchmark.py parallel -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/LI.log 2>&1 & 
+nohup uv run benchmark.py parallel -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HI.log 2>&1 &
+nohup uv run benchmark.py parallel -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HO.log 2>&1 &
+nohup uv run benchmark.py parallel -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Parallel/HOmod.log 2>&1 &
 ```
 
 ## --- Minimal ---
 ```bash
-nohup uv run testPyPDEVS.py minimal -D 400 -W 400 -ms LI -M -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 400 -W 400 -ms HI -M -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py minimal -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HOmod.log 2>&1 &
+nohup uv run benchmark.py minimal -D 400 -W 400 -ms LI -M -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/LI.log 2>&1 &
+nohup uv run benchmark.py minimal -D 400 -W 400 -ms HI -M -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HI.log 2>&1 &
+nohup uv run benchmark.py minimal -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HO.log 2>&1 &
+nohup uv run benchmark.py minimal -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Minimal/HOmod.log 2>&1 &
 ```
 
 ## --- Classic ---
 ```bash
-nohup uv run testPyPDEVS.py classic -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/LI.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HI.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HO.log 2>&1 &
-nohup uv run testPyPDEVS.py classic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HOmod.log 2>&1 &
+nohup uv run benchmark.py classic -D 400 -W 400 -ms LI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/LI.log 2>&1 &
+nohup uv run benchmark.py classic -D 400 -W 400 -ms HI -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HI.log 2>&1 &
+nohup uv run benchmark.py classic -D 400 -W 400 -ms HO -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HO.log 2>&1 &
+nohup uv run benchmark.py classic -D 68 -W 68 -ms HOmod -p Results/PyPDEVS -M -i 0.1 > Logs/PyPDEVS/Memory/Classic/HOmod.log 2>&1 &
 ```

+ 148 - 68
benchmarks/Agents/main.jl

@@ -3,17 +3,60 @@ using Profile
 using PProf
 using Agents
 using DEVS2Agents
-using TimerOutputs
 
 include("DelayedAtomic.jl")
 include("Generator.jl")
 include("Topologies.jl")
 
-function build_environment(type::Structure, devstone_model::CoupledDEVS, gen_period::Float64, output::Int)
+enum_choices(T::Type{<:Enum}) = [string(i) for i in instances(T)]
+
+enum_to_string(val::Enum)::String = string(val)
+
+function string_to_enum(::Type{T}, str::String)::Union{T, Nothing} where {T<:Enum}
+    sym = Symbol(str)
+    for instance in instances(T)
+        if Symbol(instance) == sym
+            return instance
+        end
+    end
+    return nothing
+end
+
+function print_stats(model)
+    total_int = 0
+    total_ext = 0
+    for agent in allagents(model)
+        if agent isa DelayedAtomic
+            total_int += agent.int_count
+            total_ext += agent.ext_count
+        end
+    end
+    println("  Total internal transitions: $total_int")
+    println("  Total external transitions: $total_ext")
+    println("  Total Number of Transitions: $(total_int + total_ext)")
+    println("  " * "-"^48)
+end
+
+function create_graph(file_path::String, title::String="")
+    svg_path = replace(file_path, ".sqlite" => ".svg")
+    cmd = ["procpath", "plot", "-d", file_path, "-f", svg_path, "-q", "rss", "--relative-time"]
+
+    if title != ""
+        push!(cmd, "--title", title)
+    end
+
+    try
+        run(`$cmd`)
+    catch e
+        @warn "Could not generate memory graph for $file_path: $e"
+    end
+end
+
+function build_environment(type::Structure, devstone_model::CoupledDEVS, gen_period::Float64)
     env = CoupledDEVS("DEVStoneEnvironment")
     add_submodel!(env, :generator, Generator;
         out_ports=(; o_out=Generate),
-        output = output, period = gen_period, cycles = 1)
+        output = 6, period = gen_period, cycles = 1)
     add_submodel!(env, :devstone, devstone_model)
 
     to_a2a = (msg::Generate) -> A2A(ceil(msg.activate * 1.5))
@@ -73,34 +116,55 @@ function parse_commandline()
             help = "List of structures to run (e.g., LI HI HO HOmod)"
             nargs = '*'
             default = ["LI", "HI", "HO", "HOmod"]
+            range_tester = in(enum_choices(Structure))
+        "--memory", "-M"
+            help = "Measures the memory usage of a simulation using procpath."
+            action = :store_true
+        "--interval", "-i"
+            help = "The interval at which memory measurements are taken (seconds)."
+            arg_type = Float64
+            default = 1.0
     end
 
     return parse_args(s)
 end
 
 # --- Single Simulation Runner ---
-function run_single_simulation(topology_type::Structure, type_str::String, depth::Int, width::Int, stats::Bool, logging::Bool, profile::Bool)
+function run_single_simulation(topology_type::Structure, depth::Int, width::Int, stats::Bool, logging::Bool, profile::Bool, memory::String, interval::Float64)
     int_delay = 0.0
     ext_delay = 0.0
+    L = nothing
+    if logging
+        L = ""
+    end
+    type_str = enum_to_string(topology_type)
 
-    # Model Creation
     GC.gc() # clear the heap before the next run
+    pp_proc = nothing
+    if memory != ""
+        my_pid = getpid()
+        procpath_query = "\$..children[?(@.stat.pid == $my_pid)]"
+        pp_cmd = `procpath record -i $interval -f stat -d $memory $procpath_query`
+        pp_proc = run(pp_cmd, wait=false)
+    end
+
+    # Model Creation
     start_time = time()
-    devstone_model = build_devstone(topology_type, "DEVStone_$(type_str)", depth, width, int_delay, ext_delay, stats)
-    env = build_environment(topology_type, devstone_model, Float64(width), 6)
+    devstone_model = build_devstone(topology_type, "DEVStone_$type_str", depth, width, int_delay, ext_delay, stats)
+    env = build_environment(topology_type, devstone_model, Float64(width))
     model_created_time = time()
 
     # Setup
     AgentUnion = Union{DelayedAtomic, Generator}
-    L = nothing
-    if logging
-        L = ""
-    end
-    model = compile_devs(env; logging=L)
+#     model = compile_devs(env; logging=L)
+    @time model = compile_devs(env; logging=L)
+#     Profile.clear()
+#     @profile model = compile_devs(env; logging=L)
+#     Profile.print(format=:flat, sortedby=:count)
+
 #     println("Number of Atomic: $(nagents(model))")
     engine_setup_time = time()
 
-    reset_timer!(DEVS2Agents.engine_timer)
 
     if profile
 #         Profile.clear()
@@ -110,17 +174,24 @@ function run_single_simulation(topology_type::Structure, type_str::String, depth
 #         Profile.Allocs.clear()
 #         Profile.Allocs.@profile sample_rate=1 simulate_devs!(model)
 #         PProf.Allocs.pprof(webport=57599)
-#
+
 #         println("Press Enter to continue and close the profiler...")
 #         readline()
     else
         simulate_devs!(model)
-        println("\n--- PROFILING RESULTS FOR $(type_str) (D:$(depth), W:$(width)) ---")
-        show(DEVS2Agents.engine_timer)
-        println("\n--------------------------------------------------\n")
     end
     sim_time = time()
 
+    if (memory != "") && pp_proc !== nothing
+        Base.kill(pp_proc, 2)
+        wait(pp_proc)
+        if isfile(memory) && filesize(memory) > 0
+            create_graph(memory, "$type_str (D:$depth, W:$width)")
+        else
+            @warn "Memory file $memory is empty after simulation."
+        end
+    end
+
     t_creation = model_created_time - start_time
     t_setup = engine_setup_time - model_created_time
     t_sim = sim_time - engine_setup_time
@@ -131,82 +202,91 @@ end
 # --- Orchestrator Main ---
 function main()
     args = parse_commandline()
+    output = args["output"]
     stats = args["stats"]
     logging = args["logging"]
     profile = args["profile"]
+    memory = args["memory"]
+    interval = args["interval"]
 
     # Process step sizes
-    ds = args["depth-stepsize"] > 0 ? args["depth-stepsize"] : args["max-depth"]
-    ws = args["width-stepsize"] > 0 ? args["width-stepsize"] : args["max-width"]
+    models = args["model-structure"]
+    repetitions = memory ? 1 : args["repetitions"]
+    max_depth = args["max-depth"]
+    max_width = args["max-width"]
+    ds = (args["depth-stepsize"] > 0 && !memory) ? args["depth-stepsize"] : max_depth
+    ws = (args["width-stepsize"] > 0 && !memory) ? args["width-stepsize"] : max_width
 
     # Setup directories
     time_dir = joinpath(args["path"], "Time")
     mkpath(time_dir)
 
-    # Convert string inputs to Enum
-    struct_map = Dict("LI" => LI, "HI" => HI, "HO" => HO, "HOmod" => HOmod)
+    mem_dir = joinpath(args["path"], "Memory")
+    mkpath(mem_dir)
+
+    file_mode = args["append"] ? "a" : "w"
 
-    for model_str in args["model-structure"]
-        if !haskey(struct_map, model_str)
-            println("Skipping unknown structure: $model_str")
-            continue
-        end
-        topology_type = struct_map[model_str]
 
-        # Construct filename
+    for model_str in models
+        topology_type = string_to_enum(Structure, model_str)
         suffix = args["filename"] == "" ? "" : "_$(args["filename"])"
-        file_path = joinpath(time_dir, "$(model_str)$(suffix).csv")
-        file_mode = args["append"] ? "a" : "w"
-
-        # Open CSV
-        open(file_path, file_mode) do file
-            # Write Header if new file
-            if !args["append"] || filesize(file_path) == 0
-                write(file, "simulator,model_type,depth,width,run,creation_time,setup_time,simulation_time\n")
+
+        if output
+            println("Warming up JIT for $model_str...")
+        end
+        run_single_simulation(topology_type, 2, 2, false, false, false, "", interval)
+
+        if memory
+            mem_file = joinpath(mem_dir, "$(model_str)$(suffix).sqlite")
+
+            if !args["append"] && isfile(mem_file)
+                rm(mem_file)
             end
 
-            # Grid Search Loop
-            repetitions = args["repetitions"]
-            for depth in ds:ds:args["max-depth"]
-                for width in ws:ws:args["max-width"]
-                    for run in 0:(repetitions - 1)
-                        if args["output"]
-                            println("Running $model_str (D:$depth, W:$width) - Repetition $run...")
-                        end
+            println("Measuring memory (Timing results will not be saved)...")
+            t_c, t_setup, t_sim, model = run_single_simulation(topology_type, max_depth, max_width, stats, logging, profile, mem_file, interval)
+            if output || stats
+                println("  Creation: $(round(t_c, digits=4))s | Setup: $(round(t_setup, digits=4))s | Sim: $(round(t_sim, digits=4))s")
+            end
+            if stats
+                print_stats(model)
+            end
 
-                        # WARM-UP PASS (Only for the very first execution of the script to compile)
-                        if run == 0 && depth == ds && width == ws
-                            run_single_simulation(topology_type, model_str, 2, 2, false, false, false)
-                        end
+            println("Saved memory database to $mem_file")
+
+        else
+            time_file = joinpath(time_dir, "$(model_str)$(suffix).csv")
+            file_mode = args["append"] ? "a" : "w"
 
-                        # Actual measured run
-                        t_creation, t_setup, t_sim, model = run_single_simulation(topology_type, model_str, depth, width, stats, logging, profile)
+            open(time_file, file_mode) do file
+                if !args["append"] || filesize(time_file) == 0
+                    write(file, "simulator,model_type,depth,width,run,creation_time,setup_time,simulation_time\n")
+                end
 
-                        # Log to CSV
-                        println(file, "agents,$model_str,$depth,$width,$run,$t_creation,$t_setup,$t_sim")
+                for depth in ds:ds:max_depth
+                    for width in ws:ws:max_width
+                        for run in 0:(repetitions - 1)
+                            if output || stats
+                                println("Running $model_str (D:$depth, W:$width) - Repetition $run...")
+                            end
 
-                        if args["output"] || args["stats"]
-                            println("  Creation: $(round(t_creation, digits=4))s | Setup: $(round(t_setup, digits=4))s | Sim: $(round(t_sim, digits=4))s")
-                        end
-                        if args["stats"]
-                            total_int = 0
-                            total_ext = 0
-                            for agent in allagents(model)
-                                if agent isa DelayedAtomic
-                                    total_int += agent.int_count
-                                    total_ext += agent.ext_count
-                                end
+                            t_c, t_setup, t_sim, model = run_single_simulation(topology_type, depth, width, stats, logging, profile, "", interval)
+
+                            println(file, "agents,$model_str,$depth,$width,$run,$t_c,$t_setup,$t_sim")
+                            flush(file)
+
+                            if output || stats
+                                println("\tCreation: $(round(t_c, digits=4))s | Setup: $(round(t_setup, digits=4))s | Sim: $(round(t_sim, digits=4))s")
+                            end
+                            if stats
+                                print_stats(model)
                             end
-                            println("  Total internal transitions: $total_int")
-                            println("  Total external transitions: $total_ext")
-                            println("  Total Number of Transitions: $(total_int + total_ext)")
-                            println("  " * "-"^48)
                         end
                     end
                 end
             end
+            println("Saved timing results to $time_file")
         end
-        println("✅ Saved timing results to $file_path")
     end
 end
 

+ 8 - 15
benchmarks/benchmark.py

@@ -249,18 +249,14 @@ if __name__ == "__main__":
         "gen_mode": "uniform" if not hasattr(args, "gen_mode") else args.gen_mode,
         "number": 1 if not hasattr(args, "number") else args.number,
     }
-    time_dir = args.path / "Time"
+    time_dir = args.path / "Time" / mode
     time_dir.mkdir(parents=True, exist_ok=True)
-    mem_dir = args.path / "Memory"
+    mem_dir = args.path / "Memory" / mode
     mem_dir.mkdir(parents=True, exist_ok=True)
-    for model_type in args.model_structure:
-        time_mode = time_dir / mode
-        time_mode.mkdir(parents=True, exist_ok=True)
-        mem_mode = mem_dir / mode
-        mem_mode.mkdir(parents=True, exist_ok=True)
 
-        time_file = (time_mode / model_type).with_suffix(".csv")
-        memory_file = (mem_mode / model_type).with_suffix(".sqlite")
+    for model_type in args.model_structure:
+        time_file = (time_dir / model_type).with_suffix(".csv")
+        memory_file = (mem_dir / model_type).with_suffix(".sqlite")
 
         if hasattr(args, "number") and args.number > 1:
             time_file = time_file.with_stem(time_file.stem + "-" + str(args.number))
@@ -271,9 +267,6 @@ if __name__ == "__main__":
             time_file = time_file.with_stem(time_file.stem + suffix)
             memory_file = memory_file.with_stem(memory_file.stem + suffix)
 
-
-
-
         mem_cmd = {"interval": args.interval, "file": memory_file} if args.memory else {}
 
         if not args.memory:
@@ -286,12 +279,12 @@ if __name__ == "__main__":
                     writer.writeheader()
 
                 run(writer, csvfile, model_type, d, w, args, mem_cmd, extra)
-            print(f"✅ Saved timing results to {time_file}")
+            print(f"Saved timing results to {time_file}")
         else:
             if os.path.exists(memory_file) and not args.append:
                 os.remove(memory_file)
 
-            print("📊 Measuring memory (Timing results will not be saved)...")
+            print("Measuring memory (Timing results will not be saved)...")
             run(None, None, model_type, d, w, args, mem_cmd, extra)
-            print(f"✅ Saved memory database to {memory_file}")
+            print(f"Saved memory database to {memory_file}")
 

+ 9 - 4
plotting Agents.md

@@ -6,17 +6,22 @@ a=./benchmarks/Results/Agents/Time
 
 nohup uv run benchmarks/compare.py param $m/LI.csv $p/LI.csv $a/LI.csv -w 100 -p Agents/LI > /dev/null 2>&1 &
 nohup uv run benchmarks/compare.py param $m/LI.csv $p/LI.csv $a/LI.csv -d 100 -p Agents/LI > /dev/null 2>&1 &
-nohup uv run benchmarks/compare.py total $m/LI.csv $p/LI.csv $a/LI.csv -p Agents/LI > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $p/LI.csv $a/LI.csv -p Agents/LI -n LI-parallel> /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $m/LI.csv $a/LI.csv -p Agents/LI -n LI-minimal > /dev/null 2>&1 &
 
 nohup uv run benchmarks/compare.py param $m/HI.csv $p/HI.csv $a/HI.csv -w 100 -p Agents/HI > /dev/null 2>&1 &
 nohup uv run benchmarks/compare.py param $m/HI.csv $p/HI.csv $a/HI.csv -d 100 -p Agents/HI > /dev/null 2>&1 &
-nohup uv run benchmarks/compare.py total $m/HI.csv $p/HI.csv $a/HI.csv -p Agents/HI > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $p/HI.csv $a/HI.csv -p Agents/HI -n HI-parallel > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $m/HI.csv $a/HI.csv -p Agents/HI -n HI-minimal > /dev/null 2>&1 &
 
 nohup uv run benchmarks/compare.py param $m/HO.csv $p/HO.csv $a/HO.csv -w 100 -p Agents/HO > /dev/null 2>&1 &
 nohup uv run benchmarks/compare.py param $m/HO.csv $p/HO.csv $a/HO.csv -d 100 -p Agents/HO > /dev/null 2>&1 &
-nohup uv run benchmarks/compare.py total $m/HO.csv $p/HO.csv $a/HO.csv -p Agents/HO > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $p/HO.csv $a/HO.csv -p Agents/HO -n HO-parallel > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $m/HO.csv $a/HO.csv -p Agents/HO -n HO-minimal > /dev/null 2>&1 &
 
 nohup uv run benchmarks/compare.py param $m/HOmod.csv $p/HOmod.csv $a/HOmod.csv -w 30 -p Agents/HOmod > /dev/null 2>&1 &
 nohup uv run benchmarks/compare.py param $m/HOmod.csv $p/HOmod.csv $a/HOmod.csv -d 30 -p Agents/HOmod > /dev/null 2>&1 &
-nohup uv run benchmarks/compare.py total $m/HOmod.csv $p/HOmod.csv $a/HOmod.csv -p Agents/HOmod > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $p/HOmod.csv $a/HOmod.csv -p Agents/HOmod -n HOmod-parallel > /dev/null 2>&1 &
+nohup uv run benchmarks/compare.py total $m/HOmod.csv $a/HOmod.csv -p Agents/HOmod -n HOmod-minimal > /dev/null 2>&1 &
+
 ```