This is an evolution of scripts I have been using locally for Cycles
benchmarking. The idea is to make this available to other developers, and to
make benchmarking of other areas of Blender easy as well. Eventually this
should then also run on the buildbot to track Blender performance over time.
Main features:
- User created configurations to quickly run, re-run and analyze a selected subset of tests.
- Supports both benchmarking with existing builds, and automatic building of specified git commits, tags and branches.
- Generate HTML page with bar and line graphs from test results.
- Controlled using simple command line tool.
See the README for more details on how to use it.
Notes:
- The need to create configuration files adds some complexity, but I found this to be important. I usually re-run the same set of tests many times for a given optimization or project I'm working on. Manually repeating steps is tedious and error prone.
- The automatic building of revisions can be convenient but is rather fragile and may need users to tweak build configurations. I find it quite convenient for quickly testing a patch and the revision before, it without disturbing my regular source and build directories. But not entirely sure we should keep this.
- Formating of printed results on the command line could be improved, to more easily compare results between revisions.
- For continuous integration, more design and implementation will be needed to integrate in the buildbot. The output is written to JSON files, which could be aggregated somewhere. The code to generate a graph from JSON files was written to not rely on any configuration or Blender build, and can generate a single HTML page using results aggregated from multiple machines.
- Currently lib/benchmarks is used as a source of .blend files and assumed to be available. There's currently only cycles scenes there, and even those are not yet set up to work well for cycles-x and quick benchmarking. How to manage this is unclear still.
- This is not currently designed to interop with Open Data. It could be made more compatible, but it's unclear if it's worthing tying these things together. I feel comparing hardware and measuring Blender performance over time are quite different things with different design decisions.
Ref T74730
