Decoding subnormal numbers is really slow
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- json, python
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 4.2k
- Forks
- 216
- Merge medio
- 2 d 18 h
- PR fusionados (30 d)
- 55
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de msgspec/msgspec
-
Decoding wide Structs is much slower with reversed or shuffled fieldsPosiblemente ocupada @Siyet la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
msgspec/msgspec#1288 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Segfault reading decimal_format after a failed Encoder.__init__ re-callPosiblemente ocupada @digit50 la tomó hace 5 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
msgspec/msgspec#1279 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Fix Free-Threading supportPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
msgspec/msgspec#1249 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
convert: mapping fields named like mapping methods (keys, get, ...) resolve to the bound methodPosiblemente ocupada @MbappeWU la tomó hace 7 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
Todos los issues de msgspec/msgspec
Issues similares
-
idxmax/idxmin raise ValueError when a single partition is all-NAPosiblemente ocupada @Jason10191019999 la tomó hoy. Abiertoneeds triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 3 días
-
Old versions of datamodelsAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
[BUG]: Windows GUI package of v1.17.0-rc3 has no GTK DLLsPosiblemente ocupada @andrut-ds la tomó hoy. Abiertobug CI/CD Pactus-GUI Windows
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
pactus-project/pactus#2428 ·
Los mantenedores suelen responder en 1 día
-
DiskDataset.reshard() can hang with a zero or negative shard sizePosiblemente ocupada @Programmer-Develops la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 19 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
GNS3/gns3-server#3017 · 1 comentario ·
Los mantenedores suelen responder en 1 día