В Python-е есть стандартный модуль `pickle` для сериализации инстансов любых классов. Кроме того JSON повсюду. Недолго погуглив нашел еще такой проектик как MessagePack который рекламируется как более быстрая и более компактная замена JSON. Если бы в этом виде нужно было отдавать куда-то наружу то здесь выиграл бы JSON. Но поскольку эта сериализация необходима только в целях хранения в БД то единственное на что нужно посмотреть и сравнить это производительность.
Для этого создал небольшой тестовый скриптик. Результаты немного удивили.
Результаты работы с листом [1,2,3].
Результаты работы с листом [1,2,3].
| Сериализация | Десериализация | |
|---|---|---|
| pickle | 16.3982307911 | 23.4636600018 |
| json | 5.60128283501 | 4.25825190544 |
| msgpack | 1.29555702209 | 0.362143039703 |
Еще пробовал лист строк ['1','2','3'] и тапл строк ('1','2','3'). Результаты для MessagePack и JSON оказались примерно такими же, а вот pickle повел себя еще хуже (добавилось 5-7 секунд).
В моем случае выбор очевиден — MessagePack.
Стоит заметить что pickle может сериализовать любые объекты питона в то время когда json и MessagePack только примитивные типы. Видимо это причина его медленной работы.
No comments:
Post a Comment