CodeIgniter installed
[living-lab-site.git] / system / core / Benchmark.php
diff --git a/system/core/Benchmark.php b/system/core/Benchmark.php
new file mode 100755 (executable)
index 0000000..515550e
--- /dev/null
@@ -0,0 +1,113 @@
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 5.1.6 or newer
+ *
+ * @package            CodeIgniter
+ * @author             ExpressionEngine Dev Team
+ * @copyright  Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @license            http://codeigniter.com/user_guide/license.html
+ * @link               http://codeigniter.com
+ * @since              Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * CodeIgniter Benchmark Class
+ *
+ * This class enables you to mark points and calculate the time difference
+ * between them.  Memory consumption can also be displayed.
+ *
+ * @package            CodeIgniter
+ * @subpackage Libraries
+ * @category   Libraries
+ * @author             ExpressionEngine Dev Team
+ * @link               http://codeigniter.com/user_guide/libraries/benchmark.html
+ */
+class CI_Benchmark {
+
+       var $marker = array();
+
+       // --------------------------------------------------------------------
+
+       /**
+        * Set a benchmark marker
+        *
+        * Multiple calls to this function can be made so that several
+        * execution points can be timed
+        *
+        * @access      public
+        * @param       string  $name   name of the marker
+        * @return      void
+        */
+       function mark($name)
+       {
+               $this->marker[$name] = microtime();
+       }
+
+       // --------------------------------------------------------------------
+
+       /**
+        * Calculates the time difference between two marked points.
+        *
+        * If the first parameter is empty this function instead returns the
+        * {elapsed_time} pseudo-variable. This permits the full system
+        * execution time to be shown in a template. The output class will
+        * swap the real value for this variable.
+        *
+        * @access      public
+        * @param       string  a particular marked point
+        * @param       string  a particular marked point
+        * @param       integer the number of decimal places
+        * @return      mixed
+        */
+       function elapsed_time($point1 = '', $point2 = '', $decimals = 4)
+       {
+               if ($point1 == '')
+               {
+                       return '{elapsed_time}';
+               }
+
+               if ( ! isset($this->marker[$point1]))
+               {
+                       return '';
+               }
+
+               if ( ! isset($this->marker[$point2]))
+               {
+                       $this->marker[$point2] = microtime();
+               }
+
+               list($sm, $ss) = explode(' ', $this->marker[$point1]);
+               list($em, $es) = explode(' ', $this->marker[$point2]);
+
+               return number_format(($em + $es) - ($sm + $ss), $decimals);
+       }
+
+       // --------------------------------------------------------------------
+
+       /**
+        * Memory Usage
+        *
+        * This function returns the {memory_usage} pseudo-variable.
+        * This permits it to be put it anywhere in a template
+        * without the memory being calculated until the end.
+        * The output class will swap the real value for this variable.
+        *
+        * @access      public
+        * @return      string
+        */
+       function memory_usage()
+       {
+               return '{memory_usage}';
+       }
+
+}
+
+// END CI_Benchmark class
+
+/* End of file Benchmark.php */
+/* Location: ./system/core/Benchmark.php */
\ No newline at end of file