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
    Write Better JavaScript with Promises

    You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes them so special. Can't you just use a callback? What's the big deal? In this article, we'll...

  • By
    Regular Expressions for the Rest of Us

    Sooner or later you'll run across a regular expression. With their cryptic syntax, confusing documentation and massive learning curve, most developers settle for copying and pasting them from StackOverflow and hoping they work. But what if you could decode regular expressions and harness their power? In...

Incredible Demos

  • By
    Fade Images with MooTools LazyLoad

    I recently received an email from a MooTools developer asking a great question about my LazyLoad class: "I'm using your LazyLoad MooTools plugin (which is great, by the way). I have been trying to figure out how to modify it so that once an image scrolls into...

  • By
    MooTools Link Fading

    We all know that we can set a different link color (among other properties) on the hover event, but why not show a little bit more dynamism by making the original color fade to the next? Using MooTools 1.2, you can achieve that effect. The MooTools...

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!