Comparaison des performances des méthodes de transformation de tableaux
Pour transformer un tableau en un autre, nous utilisons souvent des techniques comme foreach, array_map avec des fonctions lambda/closure , ou array_map avec des fonctions statiques. Cet article évalue les différences de performances entre ces approches.
Foreach
Foreach est une méthode classique qui parcourt un tableau, transformant chaque élément individuellement. Il crée un nouveau tableau à partir des résultats :
$result = array(); foreach ($numbers as $number) { $result[] = $number * 10; } return $result;
Array_map avec Lambda
Array_map avec une fonction lambda combine les éléments d'un tableau à l'aide d'un rappel fourni. Dans ce cas, une fonction lambda multiplie chaque élément par 10 :
return array_map(function($number) { return $number * 10; }, $numbers);
Array_map avec fonction statique
Array_map peut également utiliser une fonction statique comme rappel. Ici, une fonction statique nommée « tenTimes » multiplie chaque élément :
function tenTimes($number) { return $number * 10; } return array_map('tenTimes', $numbers);
Analyse des performances
Les benchmarks utilisant PHP 5.6, 7 et HHVM montrent que le array_map, à la fois avec les fonctions lambda et statiques, est systématiquement plus rapide que foreach. En effet, array_map utilise les fonctions internes, qui sont optimisées pour la vitesse.
Cependant,lors de l'utilisation de fermetures avec array_map et de l'introduction de variables externes avec 'use', l'impact sur les performances devient significatif. Foreach et array_map avec des fonctions nommées fonctionnent de la même manière dans ce scénario.
Conclusion
Lorsque l'efficacité est primordiale,array_map doit être utilisé sur foreach. Si vous utilisez des fermetures avec des variables externes, envisagez plutôt d'optimiser le code ou d'utiliser array_map avec des fonctions nommées. Le choix dépend en fin de compte d'exigences spécifiques et de considérations de performances.
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!