[Bf-committers] Blender performance measuring instrumentation improvement proposal

Martijn Berger martijn.berger at gmail.com
Wed Jun 10 12:09:42 CEST 2015


Hello everyone,


Blender is evolving at a rather nice pace currently but I feel we could use
better measurements to guide its the performance aspect of this a bit
better.

Some 3d games (like quake) have a feature called “timedemo” this basically
runs the game as fast as the hardware will let it run. I tried doing
something similar in blender and found a number of little things that maybe
could be tweaked to make this possible.

Overview of how this would work:

The user runs the command:

“blender --factory-startup --python-expr="import bpy;
bpy.ops.debug_timer(type='FULLTEST', report=True); sys.exit(0);"
demo_scene.blend”

The following happens:


   1.

   Blender starts and loads demo_scene.blend
   2.

   Blender executes the python expression passed to it
   3.

   debug_timer() is invoked:
   1.

      Move animation counter to the start of the range
      2.

      unlock max fps ( if vsync is disabled this allows very high
      framerates)
      3.

      Gets an accurate time measurement
      4.

      Run the animation and render 1 OpenGL frame per frame of animation
      5.

      At the end of the range, capture time again
      6.

      Print this time ( to stdout ?)
      4.

   sys.exit(0), exit blender


What we need for this to work:


   1.

   implement bpy.ops.debug_timer()
   2.

   Allow higher then 120 fps for animation playback
   3.

   Not sure, if we allow gl frames to be locked to blender animation frames
   4. (optional) implement ‘python-expr’ command line argument



I might have missed stuff but the purpose of this message is to inform and
discus the possibility as well as map out the bits and pieces that need to
be done in order to get this functionality.

I think something like this could also be instrumental in achieving high
performance in the viewport project.


Martijn


More information about the Bf-committers mailing list