понедельник, 28 марта 2011 г.

Mojoliciuos - Производительность Mojo::JSON

Mojo::JSON VS JSON::PP
Решил проверить производительность Mojo::JSON
Интересовала, естественно, производительность в сравнении с JSON::PP.
Колоссальная производительность JSON::XS лишает смысла сравнивать его с перловыми реализациями.

Результаты
Тестирование показало, что Mojo::JSON в 1.5 раза быстрее чем JSON::PP при сериализации и в почти в 3 раза быстрее при десериализации. Очень даже неплохо.
Естественно, JSON::XS вне конкуренции, он в 40 раз быстрее чем Mojo::JSON при сериализации и в 30 раз быстрее при десериализации.

Если мы посмотрим на абсолютные цифры производительности Mojo::JSON, то 3-5 тыс вызовов в секунду хватит для большинства проектов. Кроме того, в тесте использовалась достаточно сложная структура данных.  Ну и всегда можно переключится на JSON::XS

вторник, 22 марта 2011 г.

Guttman-Rosler Transform. Часть 1: Описание преобразования.

Уже наверное больше года хочу написать про GRT(Guttman-Rosler Transform) и наконец-то дошли руки. Вернее, наткнулся на Sort::External::Cookbook, который и взял за основу своего поста. Повествование решил разбить на две части. Первая с описанием, вторая с результатами тестирования.

Собственно сабж.
Думаю многие знакомы с преобразованием Шварца, которое позволяет повысить эфективность сортировки за счет предварительной подготовки сортируемых данных. Преобразование Гутмана-Рослера это еще один способ повышения эфективности сортировки.

Perl имеет очень удобную в использовании функцию sort. Когда мы хотим нестандартный порядок сортировки, то мы использует колбек, который передаем в функцию sort.
Например, sort {$b <=> $a } @array;

Идея GRT заключается в том, чтобы преобразовать входные данные так, чтобы мы могли сортировать без использования дополнительного колбека( "sort @transformed_array;" )

Тогда вся сортировка будет происходить на уровне C, что даст нам выигрышь в скорости.