Closed as not planned
Description
Description
I am currently doing some micro benchmarks and tried several things to speedup phpunit in some form.
one idea I had when looking at a hotpath of a app was to replace
$string = (string) preg_replace('#\d+$#', '', $name, -1, $count);
with
$string = rtrim($name, '0123456789')
I am wondering why a plain rtrim()
is as fast as a preg_replace
call which should have some kind of overhead for working with regex etc?
see
mstaab@mst22:/www/www$ hyperfine --warmup 10 'php preg.php' 'php rtrim.php'
Benchmark 1: php preg.php
Time (mean ± σ): 56.9 ms ± 9.0 ms [User: 30.6 ms, System: 25.7 ms]
Range (min … max): 43.8 ms … 80.4 ms 41 runs
Benchmark 2: php rtrim.php
Time (mean ± σ): 58.7 ms ± 9.2 ms [User: 34.0 ms, System: 24.0 ms]
Range (min … max): 43.8 ms … 83.0 ms 46 runs
Summary
'php preg.php' ran
1.03 ± 0.23 times faster than 'php rtrim.php'
mstaab@mst22:/www/www$ php -v
PHP 8.1.27 (cli) (built: Dec 21 2023 20:19:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.27, Copyright (c) Zend Technologies
mstaab@mst22:/www/www$ cat preg.php
<?php
$name = 'Sets redirect header on 301';
$string = (string) preg_replace('#\d+$#', '', $name, -1, $count);
mstaab@mst22:/www/www$ cat rtrim.php
<?php
$name = 'Sets redirect header on 301';
$string = rtrim($name, '0123456789');
PHP Version
8.1.27
Operating System
ubuntu22.04 lts