MediaWiki  master
benchmarkHooks.php
Go to the documentation of this file.
1 <?php
24 require_once __DIR__ . '/Benchmarker.php';
25 
31 class BenchmarkHooks extends Benchmarker {
32  protected $defaultCount = 10;
33 
34  public function __construct() {
35  parent::__construct();
36  $this->addDescription( 'Benchmark MediaWiki Hooks.' );
37  }
38 
39  public function execute() {
40  $cases = [
41  'Loaded 0 hooks' => 0,
42  'Loaded 1 hook' => 1,
43  'Loaded 10 hooks' => 10,
44  'Loaded 100 hooks' => 100,
45  ];
46  $benches = [];
47  foreach ( $cases as $label => $load ) {
48  $benches[$label] = [
49  'setup' => function () use ( $load ) {
50  global $wgHooks;
51  $wgHooks['Test'] = [];
52  for ( $i = 1; $i <= $load; $i++ ) {
53  $wgHooks['Test'][] = [ $this, 'test' ];
54  }
55  },
56  'function' => function () {
57  Hooks::run( 'Test' );
58  }
59  ];
60  }
61  $this->bench( $benches );
62  }
63 
67  public function test() {
68  return true;
69  }
70 }
71 
72 $maintClass = BenchmarkHooks::class;
73 require_once RUN_MAINTENANCE_IF_MAIN;
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
Maintenance script that benchmarks MediaWiki hooks.
bench(array $benchs)
Definition: Benchmarker.php:51
addDescription( $text)
Set the description text.
$wgHooks
Global list of hooks.
Base class for benchmark scripts.
Definition: Benchmarker.php:41
$maintClass
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200