Как стать автором
Обновить

Комментарии 9

Какие библиотеки, какие аналоги, кого с кем сравниваете, о чем пост?
В тех же Frameworks вы обидели пилоны с торнадо на пустом месте, но альтернативу не предложили (хотя пост про аналоги).
Или же вы спрашиваете аналоги? Ну тогда хабр не для вопросов
json vs ujson (а по ссылке ещё сравнение с 4 либами), FeedParser vs SpeedParser. Pylons/Django vs Tornado(или ещё чего лёгкого) только в контексте оверхеда.
Ну и в целом это заметка — ощущение от работы с медленным сервером, она больше собирательная. Просто личный опыт раскрываю… на более не претендую.
In [40]: import json

In [41]: %timeit json.dumps(n, ensure_ascii=True)
10000 loops, best of 3: 79 µs per loop

In [42]: %timeit json.dumps(n, ensure_ascii=False)
1000 loops, best of 3: 448 µs per loop

А могли бы вы, то же самое сделать с ujson? У меня ещё просто во весь рост встала проблема размера JSON (до 1.5 мегабайта, после всех мероприятий до 250кило убавил)
На том же самом наборе данных:

In [52]: %timeit ujson.dumps(n, ensure_ascii=False)
10000 loops, best of 3: 46.4 µs per loop

In [53]: %timeit ujson.dumps(n, ensure_ascii=True)
10000 loops, best of 3: 58.3 µs per loop
Вот… по этому я и не заметил этого. :) В ujson с ensure_ascii=False даже быстрее чем с ensure_ascii=True. А так как мы значительно уменьшаем размер JSON это даёт существенный выигрыш.

Какой Python к слову и какой процессор?
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]

Core i5 (2.5Ghz)
ujson действительно в разы быстрее, но помимо того, что он не поддерживает некоторые аттрибуты, он также не совсем корректно делает дампы некоторых типов, например результаты генераторов (у меня была с ними некоторая дискуссия и в конце концов они добавили мой патч, но все-равно остались некоторые проблемы). Учитывая, что их компанию купила EA, я не особо верю в будущее этой библиотеки (статистика на гитхабе поддерживает мои подозрения), так что мы просто остановились на том, чтобы патчить эту библиотеку локально, не дожидаясь пока они сделают поддержку тех фич, которые нам надо.
1. Я выше написал, что так же столкнулся с некоторыми ограничениями. Но в целом это всё равно лучше чем по сути ничего.
2. Публикуйте все наработки на github так же на ujson это могло бы улучшить библиотеку хоть и в виде форка.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации