The Performance Testing Plugin is a web based cachegrind file viewer.
It processes the cachegrind files and displays brief statistics on
functions which should be looked at closer for performance related
issues. The plugin is for both WordPress testers and plugin developers
and testers. The goal is to give an indication on what areas of code
are not performing fast enough, are being called a lot (might want to
look at optimizing most used functions first before looking at
functions which can't be fixed).
The plugin is completed as in it is functional and can be used. I
decided to write my own code instead of using Webgrind library for the
lexer and parser, seemed like a good idea. I worked a great deal on
the lexer and parser for the cachegrind files, and while I can't get
the speed faster enough for larger files, I think it is fine at the
moment. It is very memory efficient at the moment which is good, since
it should be able to handle almost any file, as long as it doesn't
time out.
The rest of the details will have to be worked out over time as to
what statistics are better to be displayed for the testers and
developers. I do see myself using this plugin a lot in the coming
months after the Google Summer of Code is complete, so I do see myself
refining the plugin and improving it with better details that matter
the most with better functionality.
There are parts of the code I do like, the point that half the code
has inline documentation and is somewhat clean before you get into the
cachegrind process code. There still needs to be more inline
documentation and there also needs to be test cases for several parts
of the code. Those two items will come later as they are lower of a
priority at this point.
The plugin can be found at:
http://www.santosj.name/performance.zip
After the major issues with the plugin are fixed, I'll begin work on
converting the WordPress library to a PHP extension. My project
consists of two parts, the Performance Testing Plugin and the
WordPress PHP extension. The latter of which will commence next week,
while I put the finishing touches on the plugin.