MediaWiki  master
benchmarkHooks.php
Go to the documentation of this file.
1 <?php
24 require_once __DIR__ . '/../includes/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  $hookContainer = $this->getHookContainer();
48  foreach ( $cases as $label => $load ) {
49  $benches[$label] = [
50  'setup' => function () use ( $load, $hookContainer ) {
51  for ( $i = 1; $i <= $load; $i++ ) {
52  $hookContainer->register( 'Test', [ $this, 'test' ] );
53  }
54  },
55  'function' => static function () use ( $hookContainer ) {
56  $hookContainer->run( 'Test' );
57  }
58  ];
59  }
60  $this->bench( $benches );
61  }
62 
66  public function test() {
67  return true;
68  }
69 }
70 
71 $maintClass = BenchmarkHooks::class;
72 require_once RUN_MAINTENANCE_IF_MAIN;
$maintClass
Maintenance script that benchmarks MediaWiki hooks.
__construct()
Default constructor.
execute()
Do the actual work.
Base class for benchmark scripts.
Definition: Benchmarker.php:40
bench(array $benchs)
Definition: Benchmarker.php:49
getHookContainer()
Get a HookContainer, for running extension hooks or for hook metadata.
addDescription( $text)
Set the description text.