<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400});
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Code Igniter User Guide Version 1.5.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Benchmarking Class
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Benchmarking Class</h1>

<p>Code Igniter has a Benchmarking class that is always active, enabling the time difference between any
two marked points to be calculated.</p>

<p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>


<p>In addition, the benchmark is always started the moment the framework is
invoked, and ended by the output class right before sending the final view to the browser, enabling a very accurate
timing of the entire system execution to be shown.</p>


<h3>Table of Contents</h3>

<ul>
<li><a href="#using">Using the Benchmark Class</a></li>
<li><a href="#profiler">Profiling Your Benchmark Points</a></li>
<li><a href="#execution">Displaying Total Execution Time</a></li>
<li><a href="#memory">Displaying Memory Consumption</a></li>
</ul>



<a name="using"></a>
<h2>Using the Benchmark Class</h2>

<p>The Benchmark class can be used within your <a href="../general/controllers.html">controllers</a>,  <a href="../general/views.html">views</a>, or your  <a href="../general/models.html">Models</a>.  The process for usage is this:

<ol>
<li>Mark a start point</li>
<li>Mark an end point</li>
<li>Run the "elapsed time" function to view the results</li>
</ol>

<p>Here's an example using real code:</p>

<code>$this->benchmark->mark('code_start');<br />
<br />
// Some code happens here<br />
<br />
$this->benchmark->mark('code_end');<br />
<br />
echo $this->benchmark->elapsed_time('code_start', 'code_end');</code>

<p><strong>Note:</strong> The words "code_start" and "code_end" are arbitrary.  They are simply words used to set two markers.  You can
use any words you want, and you can set multiple sets of markers. Consider this example:</p>

<code>$this->benchmark->mark('dog');<br />
<br />
// Some code happens here<br />
<br />
$this->benchmark->mark('cat');<br />
<br />
// More code happens here<br />
<br />
$this->benchmark->mark('bird');<br />
<br />
echo $this->benchmark->elapsed_time('dog', 'cat');<br />
echo $this->benchmark->elapsed_time('cat', 'bird');<br />
echo $this->benchmark->elapsed_time('dog', 'bird');</code>


<a name="profiler"></a>
<h2>Profiling Your Benchmark Points</h2>

<p>If you want your benchmark data to be available to the
<a href="../general/profiling.html">Profiler</a> all of your marked points must be set up in pairs, and
each mark point name must end with <kbd>_start</kbd> and <kbd>_end</kbd>.
Each pair of points must otherwise be named identically. Example:</p>

<code>
$this->benchmark->mark('my_mark<kbd>_start</kbd>');<br />
<br />
// Some code happens here...<br />
<br />
$this->benchmark->mark('my_mark<kbd>_end</kbd>');
<br /><br />

$this->benchmark->mark('another_mark<kbd>_start</kbd>');<br />
<br />
// Some more code happens here...<br />
<br />
$this->benchmark->mark('another_mark<kbd>_end</kbd>');

<p>Please read the <a href="../general/profiling.html">Profiler page</a> for more information.</p>



<a name="execution"></a>
<h2>Displaying Total Execution Time</h2>

<p>If you would like to display the total elapsed time from the moment Code Igniter starts to the moment the final output
is sent to the browser, simply place this in one of your view templates:</p>

<code>&lt;?=$this->benchmark->elapsed_time();?&gt;</code>

<p>You'll notice that it's the same function used in the examples above to calculate the time between two point, except you are
<strong>not</strong> using any parameters.  When the parameters are absent, Code Igniter does not stop the benchmark until right before the final
output is sent to the browser.  It doesn't matter where you use the function call, the timer will continue to run until the very end.</p>

<p>An alternate way to show your elapsed time in your view files is to use this pseudo-variable, if you prefer not to use the pure PHP:</p>
<code>{elapsed_time}</code>

<p class="important"><strong>Note:</strong> If you want to benchmark anything within your controller
functions you must set your own start/end points.</p>

<a name="memory"></a>
<h2>Displaying Memory Consumption</h2>

<p>If your PHP installation is configured with --enable-memory-limit, you can display the amount of memory consumed by the entire
system using the following code in one of your view file:</p>

<code>&lt;?=$this->benchmark->memory_usage();?&gt;</code>
<p>Note: This function can only be used in your view files. The consumpiton will reflect the total memory used by the entire app.</p>

<p>An alternate way to show your memory usage in your view files is to use this pseudo-variable, if you prefer not to use the pure PHP:</p>
<code>{memory_usage}</code>




</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="../general/alternative_php.html">Alternative PHP Syntax</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="calendar.html">Calendaring Class</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>