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  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;
RUN_MAINTENANCE_IF_MAIN
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:38
BenchmarkHooks\$defaultCount
$defaultCount
Definition: benchmarkHooks.php:32
Maintenance\addDescription
addDescription( $text)
Set the description text.
Definition: Maintenance.php:327
Benchmarker\bench
bench(array $benchs)
Definition: Benchmarker.php:51
BenchmarkHooks\__construct
__construct()
Default constructor.
Definition: benchmarkHooks.php:34
$wgHooks
$wgHooks
Global list of hooks.
Definition: DefaultSettings.php:7946
BenchmarkHooks\test
test()
Definition: benchmarkHooks.php:67
Benchmarker
Base class for benchmark scripts.
Definition: Benchmarker.php:41
BenchmarkHooks\execute
execute()
Do the actual work.
Definition: benchmarkHooks.php:39
BenchmarkHooks
Maintenance script that benchmarks MediaWiki hooks.
Definition: benchmarkHooks.php:31
$maintClass
$maintClass
Definition: benchmarkHooks.php:72
Hooks\run
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:134