php / php/php-src

Foreach argument CoW should be optimized

Offen
#11,775 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Category: Optimizer Feature
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

Currently, foreach does CoW on any foreach argument ($arr) modification. This is too conservative.

https://3v4l.org/ShQmT/rfc#vgit.master

The repro shows common usecase of modifying currently iterated item/index. CoW is not needed, as the currently iterated item/index will never be iterated again.

In general, any already iterated item/key does not need CoW when unset/modified.

Also $arr append does not need CoW neither as the last element of the original $arr can be easily tracked.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der verlinkten Reproduktion unter 3v4l.org/ShQmT und verfolge, wie PHPs foreach-Implementierung copy-on-write für geänderte Elemente, Schlüssel, unset-Operationen und Anhänge behandelt. Als abgeschlossen gilt die Arbeit, wenn nachgewiesen ist, dass bereits iterierte Elemente und der Anhängefall unnötiges CoW vermeiden und dabei das Verhalten von foreach erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, php
Bereich
backend, performance
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.