PHP : array_shift

 2006-10-27

(English follows)

La fonction PHP array_shift peut être assez gourmande en ressources processeur. Quand c'est possible, vous devriez utiliser array_slice à la place

Considerez le code suivant  :

$monthlyHits = 0;
reset ($hitsArray);
foreach($hitsArray as $visitTime ) {
if ($visitTime < $monthStart ) {
array_shift($hitsArray);
$monthlyHits++;
}
}

Il peut être remplacé par :
$monthlyHits = 0;
reset ($hitsArray);
foreach($hitsArray as $visitTime ) {
if ($visitTime < $monthStart ) {
$monthlyHits++;
}
}
$monthlyHits = array_slice($hitsArray,$monthlyHits);

Voici le résultat d'un test que j'ai effectué sur un tableau de 10000 lignes :
Première méthode, 9000 milisecondes.
Seconde methode, 4 milisecondes.


English :

Note that array_shift can be rather time consuming. Whenever possible, you should consider using array_slice instead.

Consider the following code :

$monthlyHits = 0;
reset ($hitsArray);
foreach($hitsArray as $visitTime ) {
if ($visitTime < $monthStart ) {
array_shift($hitsArray);
$monthlyHits++;
}
}

This could be replaced by :
$monthlyHits = 0;
reset ($hitsArray);
foreach($hitsArray as $visitTime ) {
if ($visitTime < $monthStart ) {
$monthlyHits++;
}
}
$monthlyHits = array_slice($hitsArray,$monthlyHits);

Here is a benchmark I did on a 10 000 rows array :
First method, 9000 mili-seconds.
Second method, 4 mili-seconds


Préparer cette page en vue de l'impression Envoyer cette page par e-mail

Commentaires :


Voir et ajouter des commentaires (1)

Nom ou pseudo
Adresse e-mail (2)
Site web (3) http://
Commentaire (4)
Recopiez le code (5 caractères) (5) : captcha  = 
(1) Attention : ce site est modéré a priori. Votre texte ne s'affichera qu'après validation par un modérateur du site.
(2) Champ obligatoire. Cochez la case ci-dessous si vous souhaitez que votre adresse apparaisse aux yeux de tous (par défaut, votre adresse e-mail est cachée) :
Je souhaite que mon adresse e-mail soit rendue publique sur le site au côté de mon commentaire.
(3) Champ facultatif.
(4) Texte simple. Toutes balises HTML seront supprimées.
(5) Respectez les minuscules et majuscules. Mesure anti-spam. Merci de votre compréhension.

Nouveautés sous cette rubrique :
PHP : array_shift  (English follows)La fonction PHP array_shift peut être assez gourmande en ressou (...)
PHP : transformToDoc vs. transformToXML ?  English translation follows.Dans la plupart des cas, si vous attendez une sortie (...)
Hotmail et UTF-8  UTF-8 est la lingua franca du web : cette méthode d'encodage permet d'utiliser s (...)
Support de l'UTF-8 dans divers clients MySQL  De nombreux clients (GUI) pour base de donnée MySQL prétendent un "support compl (...)
Comment to the DOMNamedNodeMap ->getNamedItem() page in the php.net manual  Basic example of use :< ? php(...)echo $doc->documentElement->attributes->getNam (...)

Easter Flakes • Flocons de Pâques | Nous contacter
© Easter Flakes - 2007. Tous droits réservés sur toutes images, textes et codes. Valid XHTML 1.0 Transitional