benchmarks: Add benchmarks for MapCacheLRU and HashBagOStuff
authorTimo Tijhof <krinklemail@gmail.com>
Thu, 27 Jul 2017 21:09:41 +0000 (14:09 -0700)
committerKrinkle <krinklemail@gmail.com>
Thu, 27 Jul 2017 21:40:42 +0000 (21:40 +0000)
commit3bcc039e7a61da99e4af1a8c9c6de600b84d7e1d
tree36f20ee904290a2b93c4f3b845b149652ae91b3d
parentfd27aec32d53c9fe5e4edcc88f9610fdd5c6dc48
benchmarks: Add benchmarks for MapCacheLRU and HashBagOStuff

Currently, HashBagOStuff leads in most benchmarks, except for
the --fill benchmark, where MapCacheLRU is faster on HHVM.
(by invoking with `PHP=hhvm mwscript maintenance/bench...`)

Run in MediaWiki-Vagrant (Debian Jessie) on MacBook Pro host.

$ benchmarkLruHash.php --count 50000 --construct
Running PHP 5.6.30-0+deb8u1:
- HashBagOStuff-construct (22% faster)
  total: 446.20ms (min: 0.01ms, median: 0.01ms, max: 2.09ms)
- MapCacheLRU-construct
  total: 575.31ms (min: 0.01ms, median: 0.01ms, max: 3.51ms)
Running PHP version 5.6.99-hhvm:
- HashBagOStuff-construct (13% faster)
  total: 124.70ms (min: 0.00ms, median: 0.00ms, max: 1.27ms)
- MapCacheLRU-construct
  total: 143.76ms (min: 0.00ms, median: 0.00ms, max: 2.01ms)

For MapCacheLRU, the main slowdown is its use of Wikimedia\Assert.
Removing that would make it faster than HashBagOStuff.

$ benchmarkLruHash.php --count 3000 --fill
Running PHP 5.6.30-0+deb8u1:
- HashBagOStuff-fill (22% faster)
  total: 10196.82ms (min: 2.91ms, median: 3.24ms, max: 9.51ms)
- MapCacheLRU-fill
  total: 13197.13ms (min: 3.92ms, median: 4.31ms, max: 9.90ms)
Running PHP version 5.6.99-hhvm:
- HashBagOStuff-fill
  total: 5700.37ms (min: 1.71ms, median: 1.85ms, max: 8.24ms)
- MapCacheLRU-fill (11% faster)
  total: 4986.90ms (min: 1.48ms, median: 1.62ms, max: 6.93ms)

Change-Id: Icd03f872dddb308f162c72674c8d2aa6092395e5
autoload.php
maintenance/benchmarks/benchmarkLruHash.php [new file with mode: 0644]