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.





















PPTab® 7 Inch Android 4.2 PC Tablet 8GB - 512MB DDR RAM A20 - Best Touch Screen - HDMI Output 1080P - Micro USB Port - Great for Kids & Cheap - Front & Back Camera - Wifi for Internet - DualCore A7 1GHZ - Google Play Installed


PPTab® 7 Inch Android 4.2 PC Tablet 8GB – 512MB DDR RAM A20 – Best Touch Screen – HDMI Output 1080P – Micro USB Port – Great for Kids & Cheap – Front & Back Camera – Wifi for Internet – DualCore A7 1GHZ – Google Play Installed


$59.99


The 8GB tablet works great and features Android 4.2.2. Its perfect for those on the road trips or simply to keep your kids entertained. Comes with Micro USB Cable, AC Adapter (USA), & Manual.Google Play Pre-Installed
Comes with Youtube App
Includes a MicroSD Slot for expanded memory Tablet is great for kids & adultsHDMI Output for connecting your tablet to your TV…

Dragon Touch A1X 10.1 Quad Core Google Android 4.4 KitKat Tablet PC, 1GB RAM, 16GB Nand Flash, Bluetooth, Dual Camera, HDMI, Google Play Pre-installed, 3D Game Supported, 2014 Newest Model [ by TabletExpress ]


Dragon Touch A1X 10.1 Quad Core Google Android 4.4 KitKat Tablet PC, 1GB RAM, 16GB Nand Flash, Bluetooth, Dual Camera, HDMI, Google Play Pre-installed, 3D Game Supported, 2014 Newest Model [ by TabletExpress ]


$109.99


Need a keyboard case ? Please search “B00EZAX2LA” on Amazon Brilliant PerformanceEquipped with a Quad-Core CPU and Octa Core GPU, this tablet ensures everything running smoothly. Enjoy yourself with stream videos, smooth-flowing gaming, web surfing and more!Newest Android 4.4 KitKatThe newly released system enables faster multitasking, optimizes user interface with more convenience and simplity a…

Tags: ,