Так получилось, что несколько месяцев я пытался серьёзно использовать в качестве сервера, железку на ARM процессоре.
Об этом я писал тут и тут.
Производительности мне часто не хватало, и я находил и искал различные альтернативы, часто активно использующие C/C++. Парочка библиотек под катом.
Заранее прошу прощения если все уже знают об этом но я вот только недавно раскопал эти либы.
Вот куда сейчас без него? Для веб приложений это по сути основной формат. Сервер должен уметь быстро преобразовывать python структуры в JSON и отдавать браузерам или устройствам. Наверное большинство делают import json и у них всё замечательно…
А вот если надо в разы быстрее тогда встречайте ujson. Порядки ускорения можно глянуть по ссылке, но на ARM по сути использование ujson позволило сократить время запроса с нескольких секунд до
Если у вас в JSON много текста не на английском языке то крайне выгодно использовать параметр ensure_ascii=False для функции dumps. Дело в том, что по умолчанию текст кодируется в JSON при помощи \u нотации что приводит к 6-8 байтам на один символ, а так можно всё отдавать чисто в utf-8, что уменьшает отдаваемый JSON в 2 или 3 раза (даже если используется gzip).
Многие наверно использовали эту библиотеку для того что бы парсить RSS, ATOM и т.д. Её производительность и раньше меня напрягала, а теперь я вообще не мог ей нормально пользоваться, так как парсиниг одной RSS мог длится минуту. На помощь мне пришёл SpeedParser, он позволил сократить время разбора RSS до нескольких секунд. В целом по синтаксису он совместим с FeedParser но поведение сильно отличается. К примеру он не видит кастомные namespace или игнорит которых нету в его списке (который жёстко забит в либе). Для правки некоторых ошибок мы применили MonkeyPatching (увы).
Нельзя использовать максимальные значения, а лучше крутиться вокруг коэффициента 5. Ниже уже на скорость начинает сильно влиять размер, а выше уже сильно замедляет формирование контента на отдачу.
Чем меньше оверхеда тем лучше. Не пытайтесь разворачивать крупные фреймворки, они работать будут но уже на паре другой человек всё встанет колом. Разница между Pylons и Tornado на пустой странице 3 раза.
Об этом я писал тут и тут.
Производительности мне часто не хватало, и я находил и искал различные альтернативы, часто активно использующие C/C++. Парочка библиотек под катом.
Заранее прошу прощения если все уже знают об этом но я вот только недавно раскопал эти либы.
JSON
Вот куда сейчас без него? Для веб приложений это по сути основной формат. Сервер должен уметь быстро преобразовывать python структуры в JSON и отдавать браузерам или устройствам. Наверное большинство делают import json и у них всё замечательно…
А вот если надо в разы быстрее тогда встречайте ujson. Порядки ускорения можно глянуть по ссылке, но на ARM по сути использование ujson позволило сократить время запроса с нескольких секунд до
Если у вас в JSON много текста не на английском языке то крайне выгодно использовать параметр ensure_ascii=False для функции dumps. Дело в том, что по умолчанию текст кодируется в JSON при помощи \u нотации что приводит к 6-8 байтам на один символ, а так можно всё отдавать чисто в utf-8, что уменьшает отдаваемый JSON в 2 или 3 раза (даже если используется gzip).
FeedParser
Многие наверно использовали эту библиотеку для того что бы парсить RSS, ATOM и т.д. Её производительность и раньше меня напрягала, а теперь я вообще не мог ей нормально пользоваться, так как парсиниг одной RSS мог длится минуту. На помощь мне пришёл SpeedParser, он позволил сократить время разбора RSS до нескольких секунд. В целом по синтаксису он совместим с FeedParser но поведение сильно отличается. К примеру он не видит кастомные namespace или игнорит которых нету в его списке (который жёстко забит в либе). Для правки некоторых ошибок мы применили MonkeyPatching (увы).
GZIP
Нельзя использовать максимальные значения, а лучше крутиться вокруг коэффициента 5. Ниже уже на скорость начинает сильно влиять размер, а выше уже сильно замедляет формирование контента на отдачу.
Frameworks
Чем меньше оверхеда тем лучше. Не пытайтесь разворачивать крупные фреймворки, они работать будут но уже на паре другой человек всё встанет колом. Разница между Pylons и Tornado на пустой странице 3 раза.
Как то так.
Продолжение истории с чатом тут: http://ift.tt/1j3ZSfL.
ЗЫ в тексте много жаргонизмов, простите но мне так приятнее писать.
ЗЫ2 ошибок скорее всего так же много, пишите в личку если найдёте.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий