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:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user