MediaWiki master
benchmarkHooks.php
Go to the documentation of this file.
1<?php
24require_once __DIR__ . '/../includes/Benchmarker.php';
25
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;
72require_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.
bench(array $benchs)
getHookContainer()
Get a HookContainer, for running extension hooks or for hook metadata.
addDescription( $text)
Set the description text.