Unserialize vs. Include

С подачи mivlad провёл эксперимент. Создал расходящийся массив таким вот образом:

for ($i = 0; $i<10; $i++)
$a[$i] = array_merge($a, md5($i));

Результат записал в два файла. Один — в виде serialize-представления, другой — в виде PHP (собственная функция, аналог var_export).

Далее, в цикле (1000 итераций) сначала читал этот файл и unserializ'ил его в переменную, потом — просто включал его через include.

Так вот. Результаты меня поразили. Я-то думал, что всё с точностью наоборот.

1000 штук unserialize выполнились за 10 секунд
1000 штук include — за 25.

На одномерных массивах разница всего лишь в треть, но опять же проигрывает include. Этому, конечно, есть объяснение — serialize-формат куда проще PHP, а, следовательно, и парсить его можно быстрее. До этого я замерял скорости serialize и var_export (выигрывал var_export) и был уверен, что с обратным преобразованием дело обстоит точно так же. Выходит ошибался.

9 комментариев

Для поднятия настроения

Автор — Жгун, как, собственно, и написано на картинке.

Иллюстрация не сохранилась

5 комментариев