Maison >développement back-end >tutoriel php >Comment puis-je fusionner de manière optimale deux tableaux plats avec des valeurs alternées en PHP ?

Comment puis-je fusionner de manière optimale deux tableaux plats avec des valeurs alternées en PHP ?

DDD
DDDoriginal
2024-11-24 07:10:09755parcourir

How Can I Optimally Merge Two Flat Arrays with Alternating Values in PHP?

Fusionner de manière optimale des tableaux plats avec des valeurs alternées

Dans les situations où les performances sont cruciales, vous pouvez rencontrer le besoin de fusionner deux tableaux plats de valeur égale taille, en alternant leurs valeurs. Bien qu'une simple boucle qui itère sur les tableaux puisse y parvenir, elle laisse place à une optimisation potentielle des performances.

Solution native

Une façon de fusionner efficacement les tableaux utilise un nombre précalculé. Voici le code PHP amélioré :

$count = count($a1);
for ($i = 0; $i < $count; $i++) {
    $newArray[] = $a1[$i];
    $newArray[] = $a2[$i];
}

Comparaison des benchmarks

Pour démontrer la différence de performances, nous avons effectué des benchmarks avec le code original et mis à jour :

$a1 = array(0,1,2);
$a2 = array(3,4,5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++)
{
    $newArray = array();
    $count = count($a1);
    for ($i = 0; $i < $count; $i++)
    {
        $newArray[] = $a1[$i];
        $newArray[] = $a2[$i];
    }
}
echo  round(microtime(TRUE) - $start, 2); # 0.6

$a1 = array(0,1,2);
$a2 = array(3,4,5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++)
{
    $newArray = array();
    for ($i = 0; $i < count($a1); $i++) // count() inside loop
    {
        $newArray[] = $a1[$i];
        $newArray[] = $a2[$i];
    }
}
echo  round(microtime(TRUE) - $start, 2); # 0.85

Les résultats montrent que le pré-calcul de la taille du tableau à l'aide de count() offre une amélioration notable de la vitesse. En évitant les comptages répétitifs, le code optimisé fonctionne beaucoup plus rapidement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn