Maison > développement back-end > tutoriel php > Comparaison des performances entre php array_push et $arr[]=$value

Comparaison des performances entre php array_push et $arr[]=$value

jacklove
Libérer: 2023-03-31 07:34:02
original
1781 Les gens l'ont consulté

1. La méthode array_push

array_push pousse un ou plusieurs éléments à la fin du tableau.

int array_push ( array &$array , mixed $var [, mixed $... ] )
Copier après la connexion

array_push() traite le tableau comme une pile et pousse les variables transmises à la fin du tableau. La longueur du tableau augmentera en fonction du nombre de variables placées sur la pile.
Le même effet que ce qui suit :

<?php$arr[] = $value;?>
Copier après la connexion

2. Comparez les performances de array_push et $arr[]=$value

Utilisez array_push pour push 1000000 Elements

<?php$starttime = get_microtime();$arr = array();for($i=0; $i<1000000; $i++){
    array_push($arr, $i);
}$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());    return (float)$usec + (float)$sec;
}?>
Copier après la connexion

Durée d'exécution : 2735.545158 ms

Push en utilisant $arr[] = $value 100000 éléments

<?php$starttime = get_microtime();$arr = array();for($i=0; $i<1000000; $i++){    $arr[] = $i;
}$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());    return (float)$usec + (float)$sec;
}?>
Copier après la connexion

Temps d'exécution : 417.458057 ms

Résultat : pousser un élément à chaque fois, en utilisant $arr[]=$value est 7 fois plus rapide que l'utilisation de la méthode array_push.

3. Poussez plusieurs éléments en même temps pour comparaison

Utilisez la méthode array_push pour pousser 100 000 éléments, 50 éléments à chaque fois

<?php$starttime = get_microtime();$arr = array();for($i=0; $i<1000000; $i=$i+50){
    array_push($arr, $i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10,        $i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19,        $i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29,        $i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39,        $i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49);
}$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());    return (float)$usec + (float)$sec;
}?>
Copier après la connexion

Temps d'exécution : 250,149012 ms

Résultat : utilisez array_push pour pousser plusieurs éléments à la fois, puis utilisez $arr[]=$value plusieurs fois pour pousser rapidement. Plus array_push introduit d'éléments en même temps, plus il est efficace.

Résumé :

Si vous poussez un élément, l'utilisation de $arr[]=$value est efficace car elle évite la charge supplémentaire d'appeler des fonctions.
Si plusieurs éléments sont poussés en même temps, l'utilisation de array_push est plus efficace car il n'est pas nécessaire d'obtenir à plusieurs reprises le pointeur vers la fin du fichier.

Résultat : pousser un élément à la fois, en utilisant $arr[]=$value est plus rapide que d'utiliser la méthode array_push 7 fois.

Cet article explique la comparaison des performances entre php array_push et $arr[]=$value Pour plus de contenu connexe, veuillez faire attention au site Web chinois de php.

Recommandations associées :

Instructions sur l'utilisation de la fonction de formatage de l'horodatage mysql from_unixtime

Instructions sur l'utilisation des fonctions mysql concat et group_concat

Explication sur la façon de gérer l'échec du démarrage de mysql innodb et l'impossibilité de redémarrer

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal