PHP : Astuces d’optimisation (épisode 1)

elephantsVoici en vrac, quelques astuces pour améliorer vos scripts PHP :

(Essayez) d’éviter la fonction in_array

La fonction in_array($needle, $haystack) est bien pratique car elle permet de retrouver un élément ($needle) dans un tableau ($haystack).

Cependant, celle-ci est relativement coûteuse car le tableau entier est scanné.

Afin d’améliorer les performances, on préferera créer un tableau associatif clé- valeur pour ensuite utiliser la fonction isset.

Par exemple :

$needle = 'pim';
$haystack = ['pim', 'pam', 'poum'];
if(in_array($needle, $haystack))
{
echo 'Pim est présent';
}

Deviendra :

$needle = 'pim';
$haystack = ['pim', 'pam', 'poum'];
// On crée notre tableau associatif
$copyHaystack = [];
foreach($haystack as $value)
{
$copyHaystack[$value] = $value;
}
// Et on peux utiliser isset
if(isset($copyHaystack[$needle]))
{
echo 'Pim est présent';
}

Ca n’est peut être pas très convaincant comme ça mais sur d’énormes tableaux, ça peut tout changer !

4 réflexions sur “PHP : Astuces d’optimisation (épisode 1)

  1. $needle = ‘pim’;
    $haystack = [‘pim’, ‘pam’, ‘poum’];

    function other_in_array($needle, $haystack) {
    foreach($haystack as $value) {
    if ($value === $needle) {
    exit true;
    }

    exit false;
    }

    Là on évite de parcourir tout le tableau.

    J’aime

    1. Si on ne doit faire la recherche qu’une fois, je pense que nos solution se valent. Par contre si plusieurs recherches doivent être faites dans le tableau je ne pense pas !

      J’aime

    1. @frague Faire une recherche dans un tableau non trié a une complexité en moyenne de n/2. Faire une recherche dans une table de hachage a une complexité constante. C’est de l’algorithmique, changer de langage n’y fera rien.

      J’aime

Laisser un commentaire