Commit Graph

25 Commits

Author SHA1 Message Date
Emmanouil Papadeas
cdea241009 Fix C# benchmarks not being able to load, add ability to change benchmark time limit (#82)
- Allow the benchmark time limit to be changed by C# scripts.
  - Continuation of #73, fixes a crash when running C# physics benchmarks.
    Also sets the C# physics benchmarks to 10 seconds.
- Fix C# benchmarks not being loaded.
2024-06-28 20:06:07 +02:00
Emmanouil Papadeas
331cd6d36c Allow the benchmark time limit to be changed by individual benchmarks (#73) 2024-06-19 16:32:43 +02:00
jamie-pate
d0977987ee Add benchmark for viewport creation/activation (#61)
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2024-04-18 16:15:41 +02:00
Hugo Locurcio
dd91e37bac Add web interface for tracking benchmark results over time (#59)
This provides a web interface generated with Hugo for tracking
benchmark results over time. Automatic dark theme support is
provided using water.css.

Benchmarks are run daily on a dedicated server with the `master` branch
of Godot compiled from source on that server, so that build time and
memory usage during the build can also be tracked over time.
Binary size as well as startup/shutdown time and memory usage
from an empty project are also measured.
2024-04-18 15:53:55 +02:00
Helehex
93bc7cd0d6 Added support for C# benchmarks (#46) 2024-02-09 14:43:04 +01:00
Francisco Demartino
38e13ba177 Add SDFGI motion benchmarks (#54)
* Skip non-Benchmark scripts
* Add SDFGI motion benchmark
2024-02-01 16:02:35 +01:00
Hugo Locurcio
f8b40e1251 Merge pull request #32 from Calinou/add-various-benchmarks 2023-08-16 12:25:20 +02:00
myaaaaaaaaa
805135f2e9 Fixes for 4.2dev3 2023-08-14 18:49:22 -04:00
Hugo Locurcio
64b7a69e5b Add various GDScript, core, GUI and physics benchmarks
- Make idle and physics time measurements somewhat functional,
  given what the engine exposes.
2023-06-29 11:11:24 +02:00
myaaaaaaaaa
c4ecac41dc Measure main thread time rather than total runtime 2023-04-19 13:26:54 -04:00
myaaaaaaaaa
6710e17b48 Condense some repetitive code in metrics tracking 2023-03-27 17:32:19 -04:00
myaaaaaaaaa
32b7e09a46 Round benchmark times to significant figures rather than fixed decimal locations 2023-03-27 17:32:19 -04:00
myaaaaaaaaa
e399ef4eb5 Remove redundant Manager.run_from_cli 2023-03-27 17:32:19 -04:00
myaaaaaaaaa
0fedc97bb1 Rework benchmark API to use functions rather than scenes as the base unit 2023-02-04 22:15:59 -05:00
myaaaaaaaaa
fd69d2d492 Remove five more global variables from manager.gd 2022-12-06 18:33:28 -05:00
myaaaaaaaaa
35c0154537 Refactor benchmark code in manager.gd to use coroutines 2022-12-06 14:51:41 -05:00
Hugo Locurcio
cc27b99bdf Store engine binary size in benchmark result files
This can be used for binary size comparisons over time. Build type
is now more granular (editor, debug template, release template) as
this will be needed for fair binary size comparisons.
2022-10-17 17:12:00 +02:00
Hugo Locurcio
86bbebd66d Implement saving results JSON file using --save-json CLI argument
- Save operating system and CPU name in results JSON.
2022-09-12 03:25:24 +02:00
Hugo Locurcio
e74abb3604 Improve benchmark UI and settings for consistency
- Use a fixed 1920×1080 viewport size for consistent results.
- Hardcode the benchmark duration to 5 seconds for benchmarks that
  have a time limit for consistent results.
- Move the Select All and Select None button next to the "Available Benchmarks:"
  label, as they're closer to the checkboxes this way.
- Make buttons larger to be easier to click.
- Only show the Copy JSON to Clipboard button after running benchmarks.
2022-09-02 17:18:51 +02:00
Hugo Locurcio
9831ab3c6d Improve benchmark registration
- Automatically register benchmarks based on `.tscn` files found in the
  `benchmarks/` folder.
  - `manager.gd` no longer needs to be edited every time a benchmark is added.
- Use full path for include/exclude glob instead of just the last category's name.
- Move benchmarks to a subfolder.
- Position the benchmark label away from the window's edges for better readability,
  and increase its outline size.
- Run the dynamic light cull with shadows benchmark
  (there was a `.tscn` file but it was unused).
2022-08-22 23:01:35 +02:00
Hugo Locurcio
fb514f8e22 Add command line arguments to include/exclude specific benchmarks
- Automatically quit on end when using `--run-benchmarks` CLI argument.
- Improve command line printing to be more helpful and descriptive.
- Add documentation on running benchmarks in the README.
2022-08-05 02:33:04 +02:00
Hugo Locurcio
4fbc50c8f8 Implement running benchmarks from the command line with --run-benchmarks
- Change window title every time a new benchmark is run to indicate
  progress.
- Tweak UI display to fit changes in the `master` branch.
2022-04-18 19:00:51 +02:00
Hugo Locurcio
e147a9fea9 Improve JSON copy, improve debug label, tweak code style
- JSON is now generated using the JSON class and includes Godot version
  information, CPU information and GPU information. Its base structure
  has changed.
- Tweak debug label visibility and mention frame setup time within.
- Tweak code style to follow the GDScript style guide (and fix a typo
  in `benchmark_group`).
2021-12-07 12:37:53 +01:00
Hugo Locurcio
b416f5792a Add initial GDScript tests
- Add wall clock time measurement on benchmarks.
- Allow tests to not have a predefined time limit.
  - This is required for scripting tests.
- Fix culling tests not reporting GPU time.
2021-11-29 14:43:11 +01:00
Juan Linietsky
2dd866ef42 Add a benchmarking suite
-Culling benchmarks only for now
2020-12-24 00:00:45 -03:00