Webgrind: Cross-platform Xdebug Profiling Web Frontend

Posted by on Apr 21, 2009 in Programming, Web Development2 commentsPrint This Post

webgrind-titleI’m using Xdebug as my primary PHP debugger. I have it integrated into my Eclipse PDT IDE, and have also been using its profiling capabilities. Until recently, I’ve been using KCachegrind – which has a wonderfully diverse feature set – as my primary profile data visualisation tool. However, as a Gnome user, KCachegrind requires a lot of KDE libraries to be installed in order to run. KCachegrind can be installed easily on Debian based systems by running:

sudo apt-get install kcachegrind

Anyone who has installed KCachegrind on a Gnome system before, or who has just run the above command, can see that it takes approximately 250Mb (after installation – about 80Mb worth of archives to download) of additional libraries and packages in order to install. I still have it installed, and use it for more detailed analysis of profile data, but I recently stumbled across a fantastic alternative called Webgrind.

Installing Webgrind

Webgrind implements a subset of the KCachegrind features, and is great for a quick preview, or simple analysis of profile data. It’s written in PHP5, and as such leaves a very small footprint, and can be installed on any platform. To install, download the latest package (1.0 at the time of writing) – as usual I downloaded to my cluttered Desktop, which by now is brimming with things I’ve forgotten about, and whose purpose I no longer have any idea… Once downloaded, the package needs unpacking, and moving to the root web directory (/var/www in my case)

cd ~/Desktop
unzip webgrind-release-1.0.zip
sudo mv webgrind /var/www

Once installed, Webgrind can be accessed by pointing your web browser to http://localhost/webgrind

Profiling

In order to profile an application, the Xdebug profiler needs switching on. This can be done by editing either the php.ini file, or in my case, a separate ini file specifically for Xdebug. Either way, the following line needs adding, so open up the ini file in a text editor, and add:

xdebug.profiler_enable = 1

Save the file and restart Apache:

sudo /etc/init.d/apache2 restart

Your PHP web application will now be profiled by Xdebug. By default, profile data will be saved in /tmp/cachegrind.out.%p (where %p is the pid). This can be changed by editing php.ini and adding the following directives:

xdebug.profiler_output_dir = /desired/output/directory/path
xdebug.profiler_output_name = desired.name.specifier

(See http://www.xdebug.org/docs/all_settings#trace_output_name for possible specifiers). To switch profiling off, simply edit the php.ini file, set  xdebug.profiler_enable to 0 and restart Apache.

Viewing Profile Data

Once profile data is available, Webgrind will automatically detect the latest profile, and give the option to display it. Point your web browser to http://localhost/webgrind. At the top are three pull down menus – the centre menu allowing us to select which profile data file to view. By default, it will automatically select the latest file, but others can be manually selected based not only on Xdebug’s default filename, but also by the actual PHP file profiled. Clicking the Update button will begin the analysis process (which may take some time depending on the size and complexity of the profile data) resulting in data being displayed in tabular format, which allows for drill down and sorting:

webgrind-screenshot

KCachegrind can be used for more detailed analysis, but for a quick view of potential bottlenecks in code, and considering its size, Webgrind is a fantastic starting point, which for me, picks out the most relevant data I need to analyse, which is sufficient 90% of the time.


Something not quite right? Inaccuracies or invalid code? Didn’t work for you? Don’t like me using Ss instead of Zs? Add a comment below! All comments are welcome. Except spam, because spam is a bit crap.





















Dragon Touch® 7'' Black Dual Core Y88 Google Android 4.1 Tablet PC, Dual Camera, HD 1024x600, 4GB, Google Play Pre-load, HDMI, 3D Game Supported (enhanced version of A13) [By TabletExpress]


Dragon Touch® 7” Black Dual Core Y88 Google Android 4.1 Tablet PC, Dual Camera, HD 1024×600, 4GB, Google Play Pre-load, HDMI, 3D Game Supported (enhanced version of A13) [By TabletExpress]


$54.99


Trademark Dragon Touch products are marketed exclusively by TabletExpress. Specification: Operating System: Google Android 4.1 (Jelly Bean)Display: 7 Inch Multi-touch screen (1024×600)CPU: iMAP X15 Dual Core, up to 1.2 GHz processor;GPU: Quad core ARM Mali 400 MP GPUInternal Memory: 4 GBMemory Expansion: MicroSD card (up to 32 GB in size)RAM: 512MB DDR3Camera: Front facing plus rear camera enhanc…

Alldaymall® 9 Inch Android 4.4 KitKat Tablet PC MID (A23 Processor, Dual Core 1.5GHz, WiFi, 8GB, 512DDR3, Dual Camera, Supports Skype Video Chatting, YouTube, Google Play)


Alldaymall® 9 Inch Android 4.4 KitKat Tablet PC MID (A23 Processor, Dual Core 1.5GHz, WiFi, 8GB, 512DDR3, Dual Camera, Supports Skype Video Chatting, YouTube, Google Play)


$59.99


Alldaymall owns this trademark exclusively. Summary: Operating System: Android 4.4 KitKat Screen Size: 9 inches Max Screen Resolution: 800 x 480 pixels Processor: Allwinner A23 Dual Core processor RAM: 512MB Hard Drive Capacity: 8GB NAND Fast Flash Extend Card: Supports up to 32GB TF card Display Technology: 5-point capacitive touchscreen Battery Power: Battery Type: 4000mAh rechargeable batte…

Tags: ,