Optimisation du code PHP : PHP foreach et pour exemples de tests de comparaison de vitesse

PHPz
Libérer: 2023-03-07 09:40:01
original
2925 Les gens l'ont consulté

Les expériences sont pour moi un moyen important d'apprendre l'informatique. L'informatique n'est pas un simple jeu intellectuel, ce n'est pas essentiellement une science, mais un outil pour transformer le monde. Les méthodes mathématiques et les méthodes expérimentales sont les méthodes de base de la recherche informatique et les méthodes de base de notre apprentissage. Les mathématiques exercent notre capacité de réflexion, et les expériences exercent notre capacité opérationnelle et notre capacité à résoudre des problèmes pratiques. Notre travail quotidien doit être considéré comme une expérience et nous devons résumer ce qui nous est utile dans notre travail quotidien. Par exemple, pour bien écrire du code PHP, une chose très importante est l'efficacité. Que l'efficacité soit élevée ou non, nous devons faire des expériences. Voici mon évaluation de plusieurs méthodes de traitement de boucles de tableau en php. Le code de test est très simple : Exemple php foreach et pour la comparaison de vitesse (Qu'est-ce que PHP foreach ?)

<?php
/**
 * array_walk 和 foreach, for 的效率的比较。
 * 我们要测试的是foreach, for, 和 array_walk的效率的问题。 
 */

//产生一个10000的一个数组。
$max = 10000;
$test_arr = range(0, $max);
$temp;
//我们分别用三种方法测试求这些数加上1的值的时间。

// for 的方法
$t1 = microtime(true);
for ($i = 0; $i < $max; $i++) {
    $temp = $temp + 1;
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "就使用for, 没有对数组操作 花费: {$t}\n";

$t1 = microtime(true);
for ($i = 0; $i < $max; $i++) {
    $test_arr[$i] = $test_arr[$i] + 1;
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用for 并且直接对数组进行了操作 花费: {$t}\n";

$t1 = microtime(true);
for ($i = 0; $i < $max; $i++) {
    addOne($test_arr[$i]);
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用for 调用函数对数组操作 花费 : {$t}\n";

$t1 = microtime(true);
foreach ($test_arr as $k => &$v) {
    $temp = $temp + 1;
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用 foreach 没有对数组操作 花费 : {$t}\n";

$t1 = microtime(true);
foreach ($test_arr as $k => &$v) {
    $v = $v + 1;
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用 foreach 直接对数组操作 : {$t}\n";

$t1 = microtime(true);
foreach ($test_arr as $k => &$v) {
    addOne($v);
}
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用 foreach 调用函数对数组操作 : {$t}\n";

$t1 = microtime(true);
array_walk($test_arr, &#39;addOne&#39;);
$t2 = microtime(true);
$t = $t2 - $t1;
echo "使用 array_walk 花费 : {$t}\n";

function addOne(&$item) {
    $item = $item + 1;
}
?>
Copier après la connexion


Résultat de l'exécution :
Utiliser simplement pour, sans frais pour les opérations sur les tableaux : 0.15388584136963
Utiliser foreach sans aucun frais pour les opérations sur les tableaux : 0,076934814453125

Utiliser et directement le tableau. Le coût d'appel d'une fonction pour les opérations du tableau: 0,32393312454224
Utilisation de ForEach pour appeler une fonction pour les opérations du tableau: 0.25716996192932
Le coût de l'array_walk: 0.17966890335083


le fonctionnement des nombres, nous pouvons tirer cette conclusion de cette expérience :
foreach est beaucoup plus efficace que for. Une raison importante est peut-être que for doit effectuer de nombreux jugements conditionnels. Ainsi, à l’avenir, utilisez foreach partout où vous pouvez l’utiliser, ce qui peut doubler l’efficacité.
Si vous souhaitez appeler une fonction dans une boucle, il est préférable d'utiliser array_walk. Il est deux fois plus efficace que for et 43% plus efficace que foreach.

Un autre conseil est que si votre programme a des exigences d'efficacité très élevées, n'appelez pas de fonctions dans des boucles profondes. Utilisez array_walk pour appeler des fonctions. Il est préférable d'écrire le code directement dans la boucle.

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:
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