Improving project loading performance

When you load a project in PiTiVi, importing the clips into the “media library” (also known internally as the “source list”) is pretty fast, but inserting them in the timeline is painfully slow. So I whipped out my torture test project and spent some time profiling what’s going on using Python’s cProfile module (I talked about it before, but see also this well-written page from the GTG folks).

The findings were interesting. Graphically, we end up with something like this:

Looking at where the time was spent, near the bottom of that graph, I suspected that linking was the root of the evil we saw.

Not long after I posted my findings, Edward posted an initial patch that makes it three times faster. Here are some measurements:

Unpatched Patched
“Boston summit” Project 7.9 seconds 2.5 seconds
“Texture” (torture) Project 1 min 32.4 seconds 31.4 seconds

(Insertion times exclude the time to import clips to the source list)

As hinted by a new version of the profiling graph, there probably is more work left to do, but this patch at least makes things more bearable. A problem is that Python’s cProfile can’t really introspect what’s going on in the “add” method of gst.Bin… Also, if anyone feels like hacking on a nice little project to get familiar with PiTiVi, may I suggest better loading progress indication? ;)

nekohayo

Branding strategist and business developer, free & open-source software UX designer and experienced community manager. Has unlimited hi-HP potions to keep teammates alive.

You can check out my main website or find me on G+ or Twitter.

2 Replies to “Improving project loading performance”

  1. Great work Jean-François!!!
    your love for PiTiVi will make the differece!

    I hope to have time for PiTiVi in the near future…

Comments are closed.