среда, 27 января 2010 г.

Движки сериализации: кто быстрее?

Сегодня наткнулся на модуль Benchmark::Serialize, который тестирует разные движки сериализации(
тестируется сериализация, десериализация и размер сериализированных данных).

У меня в системы оказались следующие движки: Data::Dumper 2.124, JSON::PP 2.27000 JSON::XS 2.27, Storable 2.20, XML::Simple 2.18. 

И я был очень и очень удивлен результатом. Первое место по всем показателям достается модулю JSON::XS, при десериализации он быстрее Storable на 30%, а при сериализации в целых 6 (!!!) раз. Размер данных тоже минимальный.

Привожу результаты (исходник бенчмарка в атаче)
               Size     Deflate    Inflate
JSON::XS       376     313980/s   139750/s   
JSON::PP       376       5307/s     1778/s    
Storable       382      46848/s   109720/s    
XML::Simple    502       4912/s     1249/s 
Data::Dumper   1058     15486/s    18719/s

3 коммент.:

Антон комментирует...

Попробуй протестить на более сложных структурах данных. Могут получиться немного другие данные (я смог добиться результатов, по которым Storable обогнал JSON::XS по двум пунктам).

Хотя соглашусь, что JSON::XS по скорости очень даже порадовал.

Надеюсь в будущем увидеть пост почему так. :)

koorchik комментирует...

Пробовал уже до этого, у меня Storable выигрывал только по размеру. И еще такой прикол был, что XML::Simple валился на бинарных данных

rewlad комментирует...

JSON::XS по скорости очень даже порадовал;

однако JSON::XS сериализует в дерево;
Storable -- в граф., он должен дополнительно отслеживать повторные проходы -- сохранять структуру.

$h = {}; $hh ={ a=>$h, b=>$h };
vs
$hh ={ a=>{}, b=>{} };

Отправить комментарий

Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)