perf(node): the Node shell runs at half the Python shell's throughput
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todaví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
- Área
- backend, performance
Línea de trabajo
Start by profiling one job through the Node shell in crates/flexiq-node and sdks/node, then compare its path with the Python shell for the same scenario. Check the napi boundary, codec defaults, concurrency semantics, and per-job versus per-batch work, using the benchmark comparison as the first measurement. Done means the throughput gap is explained; fix it with a regression test if it is a shell bug, or update the Node benchmark concurrency_model if the semantics differ.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Epic: #958
Why
Same core, same backend, same scenario, same machine, same run:
| entrant | enqueue/s | completed/s | p50 | p99 |
|---|---|---|---|---|
flexiq-redis (Python) |
8.1 | 2.1 | 6839 ms | 8946 ms |
flexiq-node-redis (Node) |
7.5 | 1.1 | 9800 ms | 19012 ms |
Roughly half the throughput and double the tail, against the same Rust code and the same Redis.
Whatever that is, it is in the shell — crates/flexiq-node or sdks/node — not in the storage
layer both shells share, and it is therefore likely to be both cheap to find and independent of
everything else under #958.
The SQLite rows show the same sign with a much smaller magnitude, which is consistent with a
fixed per-job overhead that only becomes visible once each job is already expensive.
Shape
Profile one job end to end through the Node shell and compare the work done against the Python
shell's path for the same job. Candidates worth ruling in or out first, cheapest before
deepest:
- an extra hop per job in the napi boundary — the Rust to JS to Rust callback is a
ThreadsafeFunctionplusPromise<Buffer>over atokio::oneshot - serialization: the two shells do not default to the same codec
- concurrency semantics —
concurrency: 4in the Node worker againstworkers=4threads in
Python is the same number and not necessarily the same amount of parallelism in flight - anything per job that is per batch on the Python side
Done when
- the gap is explained, whether or not it is fixed in this issue
- if it is a shell bug, it is fixed and a regression test covers it
- if it is a semantic difference in what
concurrencymeans, the benchmark's
concurrency_modelstring for the Node entrant says so, because that field exists to stop
exactly this kind of comparison being silently wrong
- Lenguaje dominante
- Rust
- Estrellas
- 20
- Forks
- 2
- Merge medio
- 10 h 50 min
- PR fusionados (30 d)
- 61
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una 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 ByteVeda/flexiq
-
docs enhancement P1
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
-
enhancement P2 storage
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
enhancement epic P1 rust storage
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
-
P2 rust tests
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
deployment epic P2
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
Todos los issues de ByteVeda/flexiq
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Bump rustls-webpki, webpki-roots and webpki-root-certs for the emSign distrust (CVE-2026-111943)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
franciscoBSalgueiro/en-croissant#1061 ·
Los mantenedores suelen responder en 3 días
-
chore good first issue macros spire
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día