PHP Optimization – Using A Timer To Benchmark Code And Increase Speed

By  on  

One of the best parts about being a programmer is that there's seemingly always a better way to do things. A simple code tweak can drastically improve the execution time of your web application. The faster your application executes the quicker you release precious server resources.

The first step in optimizing your existing PHP-based web application for speed is knowing which portions of your website need to be improved. Do your MySQL queries take too long? Are you using efficient functions? Are you using unnecessary server resources?

In my web applications I use a timer class to benchmark how long queries, functions, and entire pages are taking to complete.

The Function

class timer {
	var $start;
	var $pause_time;

	/*  start the timer  */
	function timer($start = 0) {
		if($start) { $this->start(); }
	}

	/*  start the timer  */
	function start() {
		$this->start = $this->get_time();
		$this->pause_time = 0;
	}

	/*  pause the timer  */
	function pause() {
		$this->pause_time = $this->get_time();
	}

	/*  unpause the timer  */
	function unpause() {
		$this->start += ($this->get_time() - $this->pause_time);
		$this->pause_time = 0;
	}

	/*  get the current timer value  */
	function get($decimals = 8) {
		return round(($this->get_time() - $this->start),$decimals);
	}

	/*  format the time in seconds  */
	function get_time() {
		list($usec,$sec) = explode(' ', microtime());
		return ((float)$usec + (float)$sec);
	}
}

The Usage

$timer = new timer(1); // constructor starts the timer, so no need to do it ourselves
/*

 ... mysql query ...

*/
$query_time = $timer->get();
/*

 ... page processing ...

*/
$processing_time = $timer->get();

The Output

Once you know which areas of your website need improvement, making your code more efficient can be easy if you're code is well-commented and organized. Use the timer -- which areas of your website did you notice needed improvement and how did you optimize the code? I'd love to hear your problems and solutions!

Recent Features

  • By
    Welcome to My New Office

    My first professional web development was at a small print shop where I sat in a windowless cubical all day. I suffered that boxed in environment for almost five years before I was able to find a remote job where I worked from home. The first...

  • By
    5 HTML5 APIs You Didn’t Know Existed

    When you say or read "HTML5", you half expect exotic dancers and unicorns to walk into the room to the tune of "I'm Sexy and I Know It."  Can you blame us though?  We watched the fundamental APIs stagnate for so long that a basic feature...

Incredible Demos

  • By
    Printing MooTools Accordion Items

    Sometimes we're presented with unforeseen problems when it comes to our JavaScript effects. In this case, I'm talking about printing jQuery and MooTools accordions. Each "closed" accordion content element has its height set to 0 which means it will be hidden when the...

  • By
    CSS Text Overlap

    One of the important functions of CSS is to position elements. Margin, padding, top, left, right, bottom, position, and z-index are just a few of the major players in CSS positioning. By using the above spacing...

Discussion

  1. Clyde

    Hi!
    I’m new to php and I’m making a php code that will search for operating system, browser, ip address used by a user who log on my web server which is stored in a mysql db.

    I’m using three queries that will display distinct operating system, browser and ip address used by the user.

    So my problem is that my code loads real slow, it takes more than a minute to display the results.

    How do I make this load faster?

  2. Thanks for this usefull class! I never thought about my codes performance before.

  3. Hi, I’m currently working on a project which requires some code optimization, the codes was written by someone else, I do need to optimize asap. The queries take s forever to fetch about 5500 records in mysql using php script:

    Thanks for your prompt response.

  4. Aparna Dey

    Hi, I have been searching for a benchmarking tool for PHP which would enable me to do a performance test after tweaking the php.ini file or make any other optimisation to my code.But, I have not come across anything in particular. Can anybody help???

    Kindly reply.

  5. This is a nice one! Useful for optimizing the page execution.

  6. As usual, your article is great. I don’t always find your articles during my google search but when I see one in the list of results I always click on it because you have great content!

  7. littleguy

    Clean and simple timer class. Thanks!

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!