Foreach argument CoW should be optimized
Dieses Issue hat noch niemand übernommen.
- 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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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