Decoding subnormal numbers is really slow
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- json, python
- Ambito
- backend-api-design, performance
Direzione di ricerca
Start with the benchmark in bench/main.py and reproduce decoding json.dumps([5e-324] * 65_536).encode(). Trace the JSON number-decoding path for subnormal floats, compare its behavior with the reported benchmark, and verify that decoding this input no longer shows the reported slowdown.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
I was running benchmarks for different json libaries and noticed that decoding subnormal numbers is 150x slower than orjson (it's even slower than the python implementation of jsonyx which is not shown here):
| decode | json | jsonyx | msgspec | orjson | yyjson | fastest time |
|---|---|---|---|---|---|---|
| 65,536 subnormal floats | 11.27x | 11.63x | 150.63x | 1.00x | 1.12x | 2508.46 μs |
Input data: json.dumps([5e-324] * 65_536).encode().
Full benchmark code: https://github.com/nineteendo/jsonyx/blob/main/bench/__main__.py
- Lingua principale
- Python
- Stelle
- 4.2k
- Fork
- 216
- Merge medio
- 2g 18h
- PR unite (30g)
- 55
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di msgspec/msgspec
-
Decoding wide Structs is much slower with reversed or shuffled fieldsForse già presa @Siyet l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
msgspec/msgspec#1288 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Segfault reading decimal_format after a failed Encoder.__init__ re-callForse già presa @digit50 l’ha presa 4 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
msgspec/msgspec#1279 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Fix Free-Threading supportForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
msgspec/msgspec#1249 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
convert: mapping fields named like mapping methods (keys, get, ...) resolve to the bound methodForse già presa @MbappeWU l’ha presa 6 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di msgspec/msgspec
Issue simili
-
wr.dynamodb.read_items returns [{}] for a single partition value that does not existForse già presa @auraseb l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
aws/aws-sdk-pandas#3520 ·
I maintainer di solito rispondono entro 2 giorni
-
requires triage typing
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sqlalchemy/sqlalchemy#13704 ·
I maintainer di solito rispondono entro 1 giorno
-
Edit tool converts CRLF files to LFForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
huggingface/tau#774 ·
I maintainer di solito rispondono entro 1 giorno
-
show ignores the row limit when a column or table name contains "limit"Forse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
What happened to `check.py`?Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
linebender/resvg#1179 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni