Подтвердить что ты не робот

Альтернатива сериализации Java с лучшей производительностью

Предположим, что я использую стандартную сериализацию объектов Java для записи/чтения небольших (< 1K) объектов Java в буфер памяти/из памяти. Наиболее важной частью является десериализация, то есть чтение объектов Java из буфера памяти (байтовый массив).

Есть ли более быстрая альтернатива стандартной сериализации Java для этого случая?

4b9b3361

Ответ 1

посмотрите kryo. это намного быстрее, чем встроенный механизм сериализации (который записывает много строк и в значительной степени зависит от отражения), но немного сложнее в использовании.
Редактировать: R.Moeller ниже предложил FST, о котором я до сих пор не слышал, но выглядит как быстрее, чем kryo, и совместим с java built - в сериализации (что должно сделать ее еще проще в использовании), поэтому я бы посмотрел на 1-й

Ответ 2

Вы также можете посмотреть FST.

также предоставляет инструменты для чтения/записи offhap

Ответ 4

Стандартная сериализация добавляет много информации о типе, которая затем проверяется, когда объект десериализуется. Когда вы знаете тип объекта, который вы десериализируете, это обычно не требуется.

Что вы можете сделать, это создать свой собственный метод сериализации для каждого класса, который просто записывает все значения объекта в байтовый буфер и конструктор (или метод factory, когда вы качаете этот путь), который принимает такой буфер байта и считывает все переменные из него.

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

Ответ 5

Известно, что стандартная сериализация Java стандартная, и использовать огромное количество байтов на диске. Очень просто сделать свою собственную сериализацию.
Серийная обработка javas std хороша для демонстрационного проекта, но по вышеуказанным причинам, не очень подходящим для профессиональных проектов. Дальнейшее управление версиями не очень хорошо под вашим контролем.

java предоставляет все необходимое для пользовательской сериализации, см. демонстрационный код в моем сообщении в

Java частичная (де) сериализация объектов

При таком подходе вы даже можете указать формат двоичного файла, например, в C или С# он также может быть прочитан. Другим преимуществом пользовательских объектов с сериализованными объектами требуется меньше места, чем в основной памяти (логическое значение 4 байта в основной памяти, но только 1 байт, когда пользовательский сериализованный (в байтах)

Если партнеры проекта differnet должны читать ваши серийные данные, Googles Protobuf является альтернативой для просмотра.