- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8k
Closed as not planned
Labels
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