RFC: More Interactive Graphs For Benchmarks
First, the technical details: Within the Phoronix Test Suite Git code-base now for the forthcoming 3.8-Bygland release is a new pts_Graph with the internal design being completely re-engineered. Up to this point, pts_Graph (the graphing library written for the Phoronix Test Suite that generates the line graphs, bar graphs, box plots, scatter plots, etc of test results) has used bilde_renderer to handle all of the drawing.
The bilde_renderer is a multi-format drawing API I wrote for the purpose of being able to seamlessly target SVG, PNG, JPEG, Adobe Flash/SWF, and PDF formats with these pts_Graph graphs. The bilde_renderer design has worked well for several years with having a uniform API and then different back-ends for each of the image formats. The need for supporting different formats has come down to using SVG on modern web-browsers since the resulting files are very small and display well, needing to support JPEG for merging graphs into certain PDF files and other document formats, and dumping PNG graphs for un-supported web browsers.
Now with most browsers in 2012, SVG (Scalable Vector Graphics) is working well across all major browsers with even the latest Microsoft Internet Explorer finally playing natively with SVG. There's only a few modern exceptions like a few SVG bugs with Konqueror's KHTML and the latest Opera browser still not handling a few SVG text alignment attributes correctly. So for most cases, SVG graphs from the Phoronix Test Suite are great and delivering the best image quality, file size, and also the greatest flexibility in supporting interactions with the user, etc. However, support for PNG/JPEG graphs is still needed for the problematic web-browsers and for embedding graphs into other document types.
The problem with the status quo of bilde_renderer is that this universal API still needs to be extended each time of adding new features, which these days come down to mostly adding more interactivity and other features. Most of the recent API additions have then only been implemented in the SVG back-end of bilde_renderer, so this just becomes a burden.
However, to allow for more quickly introducing new features to the SVG graphs, pts_Graph has been re-worked. In the new graphing code for Phoronix Test Suite 3.8 and later, pts_Graph internally is now manipulating an SVG DOM directly. This way new SVG features can be added quickly and easily to pts_Graph, such as mouse-over effects, more linking between results, drilling down on more test result details, etc. This means most of the time bilde_renderer is bypassed completely. which will result in slightly faster performance (time to generate graphs) for OpenBenchmarking.org and other cases where dozens or hundreds of dynamic graph requests can happen per second.
For cases where a JPEG/PNG version of the graph is needed, new Phoronix Test Suite code allows using the SVG DOM as an IR that is then fed to a bilde_renderer back-end accordingly and the unsupported portions being ignored. Effectively this makes it a lightweight SVG to PNG/JPEG translator. Compared to other open-source SVG to PNG conversion methods, this custom implementation provides 1:1 accuracy for the important drawing calls that the Phoronix Test Suite cares about for providing a static graph while the size of this translator is less than 10KB of code.
There's also some other pts_Graph changes that are being worked on too for allowing some nifty features coming soon.
To sum it up, the Phoronix Test Suite graphs can now be made much richer and highly interactive in a cleaner and easier manner. The SVG graphs are what most people deal with and then the static JPEG/PNG support remains. With Phoronix Test Suite 4.0 later in the year is my target for having many new end-user features added to the graphs rendered by the Phoronix Test Suite and OpenBenchmarking.org. (Ideally by the 4.0 release my last gripes with the SVG support in the remaining Linux browsers will also be addressed.) But prior to that, I would like to hear some feedback in terms of what visual features you would like added to the result graphs or examples of other graphs you enjoy viewing right now on the web. Please share this feedback within the forums. Thanks, and other feature requests for the Phoronix Test Suite are also welcome.