File: Iterate.php

package info (click to toggle)
php4 4.0.3pl1-0potato3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 15,168 kB
  • ctags: 20,556
  • sloc: ansic: 155,237; php: 10,827; sh: 9,608; yacc: 1,874; lex: 1,742; makefile: 788; java: 424; awk: 359; cpp: 335; perl: 181; xml: 57
file content (105 lines) | stat: -rw-r--r-- 2,928 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
//
// +----------------------------------------------------------------------+
// | PHP version 4.0                                                      |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                   |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license,      |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Sebastian Bergmann <sb@phpOpenTracker.de>                   |
// +----------------------------------------------------------------------+
//
// $Id: Iterate.php,v 1.1 2000/09/29 20:22:36 chagenbu Exp $
//

  require_once "Benchmark/Timer.php";

  /**
  * Benchmark::Benchmark_Iterate
  * 
  * Purpose:
  * 
  *   Benchmarking
  * 
  * Example:
  * 
  *   $benchmark = new Benchmark_Iterate;
  * 
  *   $benchmark->run( "my_function", 100 );
  * 
  *   $result = $benchmark->get();
  * 
  * @author   Sebastian Bergmann <sb@phpOpenTracker.de>
  * @version  $Revision: 1.1 $
  * @access   public
  */

  class Benchmark_Iterate extends Benchmark_Timer
  {
    // {{{ run()

    /**
    * Benchmarks a function.
    *
    * @param  string  $function   name of the function to be benchmarked
    * @param  int     $iterations number of iterations (default: 100)
    * @access public
    */

    function run( $function, $iterations = 100 )
    {
      for( $i = 1; $i <= $iterations; $i++ )
      {
        $this->set_marker( "start_" . $i );

        call_user_func( $function );

        $this->set_marker( "end_" . $i );
      }
    }

    // }}}
    // {{{ get()

    /**
    * Returns benchmark result.
    *
    * $result[ x            ] = execution time of iteration x
    * $result[ "mean"       ] = mean execution time
    * $result[ "iterations" ] = number of iterations
    *
    * @return array $result
    * @access public
    */

    function get()
    {
      $result = array();
      $total = 0;

      $iterations = count( $this->markers ) / 2;

      for( $i = 1; $i <= $iterations; $i++ )
      {
        $time = $this->time_elapsed( "start_" . $i , "end_" . $i );

        $total = bcadd( $total, $time, 6 );
        $result[ $i ] = $time;
      }

      $result[ "mean" ] = bcdiv( $total, $iterations, 6 );
      $result[ "iterations" ] = $iterations;

      return $result;
    }

    // }}}
  }
?>