Flagsmith / Flagsmith/flagsmith-python-client

Performance regression: v5 is 2–7× slower than v3.8.0 for local evaluation

Abierto
#198 1 comentario 0 reacciones 2 asignados Reclamado por @khvn26 Ver en GitHub
Lenguaje dominante
Python
Estrellas
24
Forks
12
Merge medio
15 h 43 min
PR fusionados (30 d)
4

Descripción

Benchmarked `flagsmith` 5.0.1 vs 3.8.0 against the same environment (edge API, `enable_local_evaluation=True`, 262 features, single-threaded, after 200-iter warmup).

### p50 per call

| Operation | v3.8.0 | v5.0.1 | Regression |
|---|---|---|---|
| `get_identity_flags` | 0.39 ms | 0.82 ms | **2.1×** |
| `get_environment_flags` | 0.11 ms | 0.79 ms | **7.4×** |
| `is_feature_enabled` (cached `Flags`) | 0.08 µs | 0.08 µs | — |

Throughput drops from ~2,570 → ~1,215 identity evals/sec per core. Latency variance also grew (stdev ~10 µs → ~220 µs).

### Repro

```python
from time import perf_counter
from flagsmith import Flagsmith

client = Flagsmith(
environment_key="",
api_url="https://edge.api.flagsmith.com/api/v1/",
enable_local_evaluation=True,
environment_refresh_interval_seconds=3600,
)
client.update_environment()

# warmup
for _ in range(200):
client.get_identity_flags(identifier="anonymous", traits={"venue_id": "12345"})

for n in (100, 1_000, 10_000):
t0 = perf_counter()
for _ in range(n):
client.get_identity_flags(identifier="anonymous", traits={"venue_id": "12345"})
elapsed = perf_counter() - t0
print(f"{n:>6} iters: {elapsed*1000:8.1f} ms ({elapsed/n*1e6:7.2f} µs/call)")
```

Environment: flag-engine 10.0.1, Python 3.12, macOS.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.