Maison >développement back-end >tutoriel php >Quelle méthode de transformation de tableau PHP est la plus rapide : foreach, array_map avec Lambda ou array_map avec fonction statique ?
Comparaison des performances de Foreach, Array_Map avec Lambda et Array_Map avec fonction statique
Cet article évalue les différences de performances entre trois approches pour transformer un array : utiliser foreach, utiliser array_map avec les fonctions lambda/closure et utiliser array_map avec 'static' fonctions/méthodes.
foreach
$result = array(); foreach ($numbers as $number) { $result[] = $number * 10; } return $result;
Carte avec lambda
return array_map(function($number) { return $number * 10; }, $numbers);
Carte avec ' fonction static', passée sous forme de chaîne référence
function tenTimes($number) { return $number * 10; } return array_map('tenTimes', $numbers);
Benchmarks de performances
Les benchmarks réalisés à l'aide de différentes versions de PHP (5.6, 7 et HHVM) ont révélé les résultats suivants :
PHP Version | Foreach | MapClosure | MapNamed | MapClosureI | ForEachI |
---|---|---|---|---|---|
5.6 | 0.57 | 0.59 | 0.69 | 0.73 | 0.60 |
7 | 0.11 | 0.16 | 0.11 | 0.19 | 0.11 |
HHVM | 0.09 | 0.10 | 0.10 | 0.11 | 0.09 |
En général, foreach et array_map avec les fonctions lambda présentaient des performances similaires. Array_map avec des fonctions statiques était légèrement plus lent. L'utilisation de fermetures avec des instructions d'utilisation a introduit une pénalité de performances notable.
Conclusion
Le choix entre ces approches dépend du cas d'utilisation spécifique et de facteurs tels que la lisibilité du code, la maintenabilité, et les performances. Pour des transformations simples, foreach et array_map avec les fonctions lambda offrent des performances comparables et fournissent une syntaxe concise. Pour des transformations plus complexes, array_map avec des fonctions statiques permet une structure de code plus propre et réutilisable, mais avec un compromis potentiel en termes 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!