Скорость батчевой генерации в Python: подходы и порядки величин #31

Closed
opened 2026-08-01 15:46:10 +03:00 by ddmitry · 1 comment
Owner

Part of #26.

Вопрос

Какого порядка скорость (строк или событий в секунду) реально ожидать от батчевой генерации событийных данных в Python и что для неё берут: numpy/векторная генерация против посточной, orjson против stdlib json, multiprocessing по дням? Ответ — по первоисточникам (документация и бенчмарки авторов библиотек), с числами и ссылками; он даст развилке производительности опору вместо догадок.

Part of #26. ## Вопрос Какого порядка скорость (строк или событий в секунду) реально ожидать от батчевой генерации событийных данных в Python и что для неё берут: numpy/векторная генерация против посточной, orjson против stdlib json, multiprocessing по дням? Ответ — по первоисточникам (документация и бенчмарки авторов библиотек), с числами и ссылками; он даст развилке производительности опору вместо догадок.
ddmitry added the wayfinder:research label 2026-08-01 15:46:47 +03:00
ddmitry self-assigned this 2026-08-01 15:48:20 +03:00
Author
Owner

Исследование готово: docs/research/2026-08-01-python-batch-generation-speed.md в ветке research/python-batch-generation-speed.

Порядки величин (на ядро CPU, по бенчмаркам авторов библиотек):

  • случайные числа numpy (PCG64) — ~3 нс на значение, ~10^8 значений/с: генерация значений конвейер не ограничивает;
  • посточная генерация: random+dict ~10^4–10^5 строк/с, Faker ~10^3–10^4 (mimesis быстрее Faker ~24x по авторскому бенчмарку) — Faker в горячий цикл не годится;
  • сериализация: orjson быстрее stdlib json в 5–14x (README orjson: запись ~55 КБ — 103 693 против 7 648 оп/с), numpy-массивы и datetime orjson сериализует нативно;
  • multiprocessing обходит GIL подпроцессами (доки Python) — распараллеливание по модельным дням умножает на число ядер.

Итог для #30: реалистичная планка «генерация + orjson посточно» — ~2–5×10^5 событий/с на ядро; живой поток ×60 от планки на 3–4 порядка ниже. Решения тикет не принимает — они за #30.

Исследование готово: docs/research/2026-08-01-python-batch-generation-speed.md в ветке research/python-batch-generation-speed. Порядки величин (на ядро CPU, по бенчмаркам авторов библиотек): - случайные числа numpy (PCG64) — ~3 нс на значение, ~10^8 значений/с: генерация значений конвейер не ограничивает; - посточная генерация: random+dict ~10^4–10^5 строк/с, Faker ~10^3–10^4 (mimesis быстрее Faker ~24x по авторскому бенчмарку) — Faker в горячий цикл не годится; - сериализация: orjson быстрее stdlib json в 5–14x (README orjson: запись ~55 КБ — 103 693 против 7 648 оп/с), numpy-массивы и datetime orjson сериализует нативно; - multiprocessing обходит GIL подпроцессами (доки Python) — распараллеливание по модельным дням умножает на число ядер. Итог для #30: реалистичная планка «генерация + orjson посточно» — ~2–5×10^5 событий/с на ядро; живой поток ×60 от планки на 3–4 порядка ниже. Решения тикет не принимает — они за #30.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: ddmitry/clickstream-data-platform#31