`json_encode` can use SIMD
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The current json_encode implementation [1] iterates on every string character.
I belive there is a potential to utilize SIMD to copy multiple characters to the output string as long as they are not to-be-escaped.
Benchmark: https://3v4l.org/XeJTn/rfc#vgit.master
This can improve performace on applications that do a lot of JSON encoding.
[1] https://github.com/php/php-src/blob/php-8.4.3/ext/json/json_encoder.c#L411
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 bei ext/json/json_encoder.c etwa ab Zeile 411 und vergleiche die aktuelle zeichenweise Kodierung mit dem Benchmark unter https://3v4l.org/XeJTn/rfc#vgit.master. Prüfe vor dem Start den offenen Pull Request #17734, da er dieses Problem bereits behandelt. Als erledigt gilt die Aufgabe, wenn eine SIMD-basierte Implementierung anhand des bestehenden Benchmarks bewertet wird, ohne das Escaping-Verhalten zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, php
- Bereich
- performance
- Issue-Typ
- Refactoring
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100