Существует ли более быстрый аналог serialize/unserialize?

  • Автор темы Автор темы DiMA
  • Дата начала Дата начала

DiMA

php.spb.ru
Команда форума
Существует ли более быстрый аналог serialize/unserialize?

собственно сабж.. можно упростить сложность упаковываемых массивов
 
зависит от характера данных (если вы готовы хранить извлекать не целые объекты, а только скаляры или массивы - то почему бы не использовать какой-либо акселератор / кешатор?)
 
Автор оригинала: DiMA

естественно никакие объекты паковать не нужно, исключительно - выборку sql или чего-нибудь такое, простое
повторюсь: почему бы не использовать тот же акселератор (если нужно отдавать на один хост. Под FreeBSD у нас адекватно работал xcache, под CentOS - eAccelerator) или memcache (если на несколько)?
 
можно, но сомневаюсь, что это будет быстрее на мелких массивах, с большими - возможно будет быстрее (тестов таких не видел)
 
DiMA
Хм, странно, как ты из приведенных тобой ссылок сделал вывод, что json тормознее? Там все же получпется, что цикл упаковка/распаковка или примерно одинаковая, или json быстрее - в зависимости от пакуемого материала :)
 
На простых массивах можно pack/unpack использовать.
Недостатки:
- под каждый массив нужно писать отдельные функции кодирования/декодирования
- нужно помнить что строка получается бинарная (например нельзя ее в обычный mysql varchar сохранять)
 
а что будет, если бинарную строку сохранить в обычном mysql varchar ?
 
делай выборку из SQL сразу сериализованной (CSV?)
 
По-моему, скорость сериализации не так важна, как скорость десериализации. Из-за преследуемых целей и соответствующей этим целям статистики.
 
> скорость сериализации не так важна

да ваще не важна, все летает

У меня на домашней тачке 20 мб файл от нейросети пишется 5-10 секунд на диск (2ГГц)

И кстати в подобных задачах (запись на диск или длительное хранение) никакие акселераторы и кеши не применимы... Разве что memcacheDB.
 
с var_export надо внимательно - очищать от кучи пробелов и лишнего кода, хранить только в надежных местах, по сети уже не передать

var_export(array("\0",array(1)));
 
Сверху