Performance tracking - Development guide for librsvg documentation (original) (raw)

View this page

Toggle table of contents sidebar

This project is suitable for a few months of work, like an Outreachy or Summer of Code internship.

As of 2022/Sep, there is no infrastructure to track librsvg’s performance over time. At different times there are efforts to reduce the memory consumption of certain parts of the code, or to make them faster, but there is no monitoring of how the library is doing as its code evolves.

Given a set of example files (which can change over time), it would be nice to track the following measurements over time:

These would let us answer questions like, is librsvg using more or less memory over time? More or less CPU time? Can we detect regressions with this tool?

Getting the actual measurements is not terribly hard; just running/usr/bin/time rsvg-convert car.svg > /dev/null already produces a useful big-picture view of things:

::

$ /usr/bin/time rsvg-convert car.svg > /dev/null 0.90user 0.07system 0:01.10elapsed 88%CPU (0avgtext+0avgdata 39460maxresident)k 224inputs+0outputs (5major+6646minor)pagefaults 0swaps

The hard part is the logistics of accumulating the reports over time, and graphing them. This is your project!

Goals

Questions to be researched by the intern

Inspiration, but beware of overkill

Sample documents

Interesting types of SVG documents to put into the performance tracker: