TGViewer
Python Заметки Python Заметки @pythonotes · 2.2K subscribers
Post #388 1.58K
JSON API сейчас весьма актуален в сфере веб-приложений.
Но у стандартной библиотеки json есть проблема - она относительно медленная.

Если ваше веб приложение должно тянуть держать нагрузку, то такие популярные операции как сериализация и десериализация JSON хорошо бы максимально оптимизировать. Каждый запрос это преобразование JSON-строки в объект, обработка запроса, и обратное кодирование объекта в JSON-строку. Буквально - каждый!

Исходные данные для теста:
file = 'data.json'  # 156kb
with open(file, 'r') as f:
file_data = f.read()
data = json.loads(file_data)
count = 50000

Сделаем эталонный замер стандартной библиотеки
start = time.perf_counter()
for i in range(count):
json.loads(file_data)
end = time.perf_counter()
json_time_decode = end - start

start = time.perf_counter()
for i in range(count):
json.dumps(data)
end = time.perf_counter()
json_time_encode = end - start

print(f'Json time: {round(json_time_decode, 2)}s/{round(json_time_encode)}s')
# Json time: 50.04s/40s

Итак, какие есть альтернативы?

Сравнивать будем с библиотеками orjson и ujson.
Код находится на github, а здесь приведу только результаты.
Json time: 50.04s/40s
Orjson time: 20.27s [2.47x speed] / 5.46s [7.35x speed]
Ujson time: 47.29s [1.06x speed] / 35.04s [1.15x speed]

Неплохой прирост с orjson я считаю! А вот ujson не особо опередил.

Тест проводился на Windows 10. Интересно, что на Linux ujson даже медленней чем стандартный. Но, думаю, это у меня какие-то проблемки.

В тесты я не добавил simplejson. Он не сильно быстрей стандартного модуля.

Если вы пишете приложения на FastAPI, то в 3 строки можете ускорить обработку JSON-ответа! Есть встроенный класс для этого.

1. Установка
poetry add orjson
# or
pip install orjson

2. Имопрт
from fastapi.responses import ORJSONResponse 
# Там же лежит и UJSONResponse

3. Подключение
app = FastAPI(
...
default_response_class=ORJSONResponse
)


Для Django тоже есть решение: drf-orjson-renderer

#libs
GitHub GitHub - ijl/orjson: Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy - ijl/orjson
  • 🔥 6
  • ❤ 4
  • 👍 2
  • 🤔 1
More from @pythonotes
  1. Sep 21, 2026­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в б…
  2. Aug 17, 2026Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без п…
  3. Jul 20, 2026У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Соби…
  4. Jul 13, 2026В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно под…
  5. Jul 6, 2026Модуль pwd может использоваться для считывания информации о пользователях из базы данных п…
  6. Jun 22, 2026Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →