env: node: нет такого файла или каталога в Mac

Действительно хорошая тема, и после прочтения нескольких ответов я хочу поделиться своими экспериментами по этому вопросу.

У меня есть прецедент, когда нужно «проверять» огромную таблицу почти каждый раз, когда я разговариваю в базу данных (не спрашивайте, почему, просто факт). Система кэширования базы данных не подходит, поскольку она не будет кэшировать разные запросы, поэтому я, хотя, о системах кэширования php.

Я попробовал apcu, но он не соответствовал потребностям, в этом случае память недостаточно надежна. Следующим шагом было кэширование в файл с сериализацией.

Таблица имеет 14355 записей с 18 столбцами, это мои тесты и статистика при чтении сериализованного кеша:

JSON:

Как вы сказали, основным неудобством с json_encode / json_decode является то, что он преобразует все в экземпляр StdClass (или Object). Если вам нужно зацикливать его, преобразование его в массив - это то, что вы, вероятно, сделаете, и да, это увеличивает время преобразования

среднее время: 780,2 мс; использование памяти: 41,5 МБ; Размер файла кеша: 3.8MB

blockquote>

Msgpack

@hutch упоминает msgpack . Довольно сайт. Попробуем попробовать?

среднее время: 497 мс; использование памяти: 32 МБ; размер кеш-файла: 2,8 МБ

blockquote>

Это лучше, но требует нового расширения; компиляция иногда испуганных людей ...

IgBinary

@GingerDog упоминает igbinary . Обратите внимание, что я установил igbinary.compact_strings=Off, потому что мне больше нравятся показатели чтения, чем размер файла.

среднее время: 411,4 мс; использование памяти: 36,75 МБ; размер кеш-файла: 3,3 МБ

blockquote>

Лучше, чем пакет msg. Тем не менее, это требует компиляции.

serialize / unserialize

среднее время: 477,2 мс; использование памяти: 36,25 МБ; размер кеш-файла: 5.9MB

blockquote>

. Чем лучше производительность, чем JSON, тем больше массив, медленнее json_decode, но вы уже новичок в этом.

Эти внешние расширения сужают размер файла и отлично смотрятся на бумаге. Числа не лежат *. Какой смысл компилировать расширение, если вы получите почти те же результаты, что и стандартные функции PHP?

Мы также можем вывести, что в зависимости от ваших потребностей вы выберете что-то другое, чем кто-либо другой:

  • IgBinary действительно хорош и работает лучше, чем MsgPack
  • Msgpack лучше сжимает ваши данные (обратите внимание, что я не пробовал вариант igbinary compact.string).
  • Не хотите компилировать? Использовать стандарты.

Вот и другие сравнения методов сериализации, чтобы помочь вам выбрать один!

* Протестировано с помощью PHPUnit 3.7.31, php 5.5.10 - только декодирование со стандартным жестким диском и старым двухъядерным процессором - средние числа на 10 одинаковых тестах использования, ваша статистика может отличаться

26
задан Community 23 May 2017 в 11:47
поделиться