Add benchmark for saved state performance

- Introduced `benchmark_saved_state.gd` to evaluate the performance of the saved state restoration process.
- Implemented JSON integer restoration to handle large integers accurately.
- Added command-line argument parsing for specifying the path to the diagnostic JSON file and optional delta seconds.
- Conducted performance tests at different speeds and logged the elapsed time for six consecutive steps.
- Created a new UID file for the benchmark script.
This commit is contained in:
Kirill
2026-09-30 22:46:26 +03:00
parent fb8a3f5658
commit fad862d618
16 changed files with 135 additions and 2399 deletions
+19
View File
@@ -1,5 +1,24 @@
# Проверки поэтапного переноса из Owniverse.U
## Производительность на сохранении
```sh
godot --headless --path Owniverse.GI --script res://tests/benchmark_saved_state.gd -- /tmp/save.adventure.json
```
Читает диагностический JSON формата 3 в отдельные экземпляры мира и замеряет
шесть последовательных шагов на скоростях 1, 4, 6. Запись сохранений не вызывается.
Последним аргументом можно задать длительность шага в реальных секундах
(по умолчанию 1/60). Это время расчёта симуляции, без отрисовки интерфейса.
При проверке регрессии на копии сохранения с 120 партиями шаг на скорости 6
занимал около 1,3 секунды. Главная причина — перебор пустых завершённых окон
коротких взрывов; дополнительная — повторное сокращение уже сокращённых дробей.
После пропуска таких окон и устранения повторных НОД замеры составили 90–99 мс
на шаг 1/60 секунды. Это ускорение примерно в 14 раз, но ещё не бюджет 60 FPS.
Размер партии, точность чисел и правила эволюции не изменены. Разреженные
сценарии дополнительно сравниваются с полным расчётом в `test_short_lived_events.gd`.
## Точная арифметика
`godot --headless --path Owniverse.GI --script res://tests/test_exact_math.gd`