La Performance de foreach, array_map avec lambda et array_map avec fonction statique

Quelle est la différence de performances (si il y en a un) entre ces trois approches, à la fois utilisé pour transformer un tableau à un autre tableau?

  1. À l'aide de foreach
  2. À l'aide de array_map avec lambda/fermeture de la fonction
  3. À l'aide de array_map avec "statique" de la fonction/méthode
  4. Est-il une autre approche?

À me faire comprendre, voyons les exemples, tous font le même multipliant la matrice de nombres de 10:

$numbers = range(0, 1000);

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 "statique" de la fonction, passé en tant que chaîne de référence

function tenTimes($number) {
    return $number * 10;
}
return array_map('tenTimes', $numbers);

Est-il une autre approche? Je serai heureux d'entendre réellement tous différences entre les cas à partir de ci-dessus, et toutes les entrées pourquoi on devrait être utilisé à la place des autres.

  • Pourquoi ne pas vous venez de référence et de voir ce qui se passe?
  • Eh bien, je peut faire un test. Mais je ne sais toujours pas comment ça fonctionne en interne. Même si je trouve l'un est plus rapide, je ne sais toujours pas pourquoi. C'est à cause de la version de PHP? Cela dépend-il les données? Est-il une différence entre associatifs et de simples tableaux? Bien sûr, je peux faire toute suite de points de référence, mais l'obtention de certains théorie enregistre ici beaucoup de temps. J'espère que vous comprenez...
  • Fin de commentaire, mais ce n'est pas while( list($k, $v)= each($tableau)) plus rapide que tous les ci-dessus? Je n'ai pas comparé ce en php5.6, mais c'était dans les versions antérieures.
InformationsquelleAutor Pavel S. | 2013-08-09