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 |
||
|---|---|---|
| .. | ||
| cssmin | ||
| australia-untidy.html.gz | ||
| bench_delete_truncate.php | ||
| bench_HTTP_HTTPS.php | ||
| bench_if_switch.php | ||
| bench_strtr_str_replace.php | ||
| bench_utf8_title_check.php | ||
| bench_wfIsWindows.php | ||
| bench_Wikimedia_base_convert.php | ||
| benchmarkCSSMin.php | ||
| Benchmarker.php | ||
| benchmarkHooks.php | ||
| benchmarkJSMinPlus.php | ||
| benchmarkLruHash.php | ||
| benchmarkParse.php | ||
| benchmarkPurge.php | ||
| benchmarkTidy.php | ||
| README | ||
This directory hold several benchmarking scripts used as a proof of speed or to track PHP performances over time. To get somehow accurate result, you might want to bound the PHP process to a specific CPU with `taskset` and raise its priority with `nice`. Example: $ taskset 1 nice -n-10 php bench_wfIsWindows.php australia-untidy.html.gz contains representative input text for benchmarkTidy.php. It needs to be decompressed before use.