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!