Самый быстрый способ сериализации и сжатия хэш-карты (объекта) в nodejs?

#javascript #node.js #serialization #compression #brotli

#javascript #node.js #сериализация #сжатие #бротли

Вопрос:

Какой самый быстрый способ сериализации и сжатия хэш-карты (объекта) javascript в NodeJS 12 ? Я пытаюсь найти самую быструю комбинацию методов сериализации и сжатия для преобразования объекта javascript в двоичные данные.

Количество возможных комбинаций составляет более 100, моя цель — предварительное исследование, чтобы выбрать несколько лучших вариантов для окончательного тестирования.

Ввод: объект, имеющий произвольные ключи, поэтому некоторые действительно быстрые методы сериализации, такие как AVSC, не могут быть использованы. Предположим, что объект имеет 30 пар ключ-значение, пример:

 {
  "key-one": 2,
  "key:two-random-text": "English short text, not binary data.",
  ... 28 more keys
}
 

Нет необходимости поддерживать сериализацию даты, регулярных выражений и т. Д.

Сериализация могут учитываться только форматы сериализации без схемы, такие как JSON или BSON. V8.serialize — интересный вариант, вероятно, он быстрый, потому что он родной. Пакет Compress-brotli по какой-то причине добавил его поддержку, но не предоставил контрольный показатель или выделил его как рекомендуемый вариант.

Сжатие, вероятно, следует рассматривать только самые быстрые методы. Не уверен, что brotli — идеальный выбор, потому что, согласно wiki, он силен в сжатии JS, CSS и HTML, потому что ожидает «ключевые слова» во входных данных. Предпочтительна встроенная поддержка nodejs.

Я нашел полезное исследование для аналогичного варианта использования (я планирую сжимать с помощью lambda и сохранять в S3), но их данные исходят из JSON, в отличие от моего случая.

Комментарии:

1. просто gzip json, он родной

Ответ №1:

Я бы рекомендовал lz4 для быстрого сжатия.

Комментарии:

1. Спасибо, что указали, он определенно рассчитан на скорость catchchallenger.first-world.info/wiki /…