chaine

Benchmark : Tester le premier caractère d'une chaine

Un match qui oppose strpos, substr, la méconnue substr_compare et l'accès aux caractères sous forme de tableau

Date de publication : 2008-12-09

Ce matin la question est : Comment tester le premier caractère d'une chaine.

J'ai trouver 4 façons de tester le premier caractère d'une chaine :
* strpos
* substr
* substr_compare
* le tableau de la chaine

Le code du benchmark :


<?php
$string = 'jaimelagalettesavezvouscommentquandelleestbienfaiteavecdubeurrededans';
$start = time() + microtime();
for ($i = 0; $i < 10000; $i ++)
{
$boolean = $string[0] === 'j';
}
var_dump(time() + microtime() - $start);
$start = time() + microtime();
for ($i = 0; $i < 10000; $i ++)
{
$boolean = strpos($string, 'j') === 0;
}
var_dump(time() + microtime() - $start);
$start = time() + microtime();
for ($i = 0; $i < 10000; $i ++)
{
$boolean = substr($string, 0, 1) === 'j';
}
var_dump(time() + microtime() - $start);
$start = time() + microtime();
for ($i = 0; $i < 10000; $i ++)
{
$boolean = substr_compare($string, 'j', 0, 1) === 0;
}
var_dump(time() + microtime() - $start);
?>

Résultats :


$string[0] === 'j' : 0.010831117630005 sec
strpos($string,'j') === 0 : 0.037698984146118 sec
substr($string,0,1) === 'j' : 0.039228916168213 sec
substr_compare($string,'j',0,1) === 0 : 0.043710231781006 sec

Notre grand vainqueur est donc $string[0] === 'j'.

Image : Shaycam

 
 

b1n@sp1n