PHP code speed comparison

function versus(callable $first, callable $second, $repeat = 100000) {
    
    $f = microtime(true);
    foreach (range(0, $repeat) as $r) call_user_func($first);
    $firstTimer = microtime(true) - $f;
    
    $s = microtime(true);
    foreach (range(0, $repeat) as $r) call_user_func($second);
    $secondTimer = microtime(true) - $s;

    printf(
        '%s function is %.2f%% faster (%f vs %f)',
        $firstTimer < $secondTimer ? 'First' : 'Second',
        abs((($firstTimer - $secondTimer) / $firstTimer) * 100),
        $firstTimer, $secondTimer
    );
}

Example

versus(
    function () {
        $str = '!loremipsum';
        return substr($str, 0, 1) === '!';
    },
    function () {
        $str = '!loremipsum';
        return $str[0] === '!';
    }
);

Will print:

Second function is 36.72% faster (0.142766 vs 0.090349)

#PHP#Snippets#2020

•raw•edit