skeye a écrit :
Le mieux est de tester, mais ça m'étonnerait fortement qu'il y ait une différence significative.
|
Bien au contraire, array_map génère un appel de fonction pour chaque item, et je doute très fort que les appels de fonctions soient très rapides dans PHP 
Donc array_map est probablement largement plus lent que foreach 
rufo a écrit :
l'idée c'était qu'avec array_map(), ça aurait été bien que ça crée des thread pour chaque appel à la fonction callback Sur un dual core, ça aurait pu faire gagner en perf...
|
Sauf que PHP n'est pas un langage "pur" (et qu'il n'est pas possible d'annoter des fonctions pour spécifier leur pureté), donc le callback peut trivialement avoir des effets de bord, demandant à ce que l'exécution soit séquentielle. Elle peut aussi utiliser des données issues de son contexte (globale) que PHP ne pourra pas indiquer à array_map, interdisant là encore la parallélisation automatique. (edit: grillé par omega2 là dessus)
Enfin, ça serait de toute façon complètement con, un thread OS c'est un objet relativement lourd, créer un thread pour chaque item de l'itération prendrait un temps fou
Message édité par masklinn le 03-09-2008 à 17:04:51
---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?