Wie vergleicht sich „foreach“ mit „array_map“ mit Lambda oder der Funktion „static“?
Beim Transformieren von Arrays denken Entwickler häufig über die Auswirkungen der Verwendung von „foreach“ auf die Leistung nach ', 'array_map' mit einer Lambda-Funktion (Abschluss) oder 'array_map' mit einer 'statischen' Funktion/Methode.
Leistungsbewertung
Benchmarking (mit deaktiviertem xdebug) zeigt Folgendes:
-
PHP 5.6:Minimaler Unterschied zwischen 'foreach ' und 'array_map'-Abschluss.
-
PHP 7 und später: 'foreach'- und 'array_map'-Abschlüsse bleiben vergleichbar.
Auswirkungen von Abschlüssen mit „use“
Das Einbeziehen von Abschlüssen mit einer „use“-Anweisung wirkt sich erheblich auf die Leistung aus die 'array_map'-Version, aber nicht in der 'foreach'-Version.
Sonstiges Ansätze
Während „foreach“, „array_map“ mit einem Lambda und „array_map“ mit einer „statischen“ Funktion die gebräuchlichsten Ansätze sind, gibt es auch andere Optionen:
-
Generatorausdrücke: Ähnlich wie „foreach“, aber prägnant (sofern von Ihrem PHP unterstützt). Version).
-
'uopz_iterator_apply()': Schnell, aber ab PHP 8.0 veraltet.
Auswahl unter den Ansätzen
Das Optimale Die Wahl hängt von Faktoren ab einschließlich:
-
Vereinfachung: 'foreach' ist einfacher zu lesen und zu schreiben.
-
Leistung: Für einfache Transformationen ohne Schleifen oder Abschlüsse, 'foreach' oder 'array_map' mit einer 'statischen' Funktion ist schneller.
-
Schließungsleistung: Wenn Schließungen erforderlich sind, erwägen Sie die Verwendung von „uopz_iterator_apply()“ für die beste Leistung in PHP 7.x oder „foreach“, wenn „uopz_iterator_apply()“ nicht verfügbar ist.
-
Code-Profiler: Verwenden Sie einen Profiler, um Leistungsengpässe zu lokalisieren und wählen Sie die am besten geeignete Technik aus.
Das obige ist der detaillierte Inhalt von„foreach', „array_map' mit Lambda oder statische Funktion: Welche ist die schnellste für die Array-Transformation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn