Для сериализации Java-объекта я хотел бы проверить разницу между использованием JSON и общими инструментами сериализации с точки зрения временной и пространственной производительности.
JSON выбирает FastJSON.
Инструмент сериализации использует Protostuff и Kyro. Почему бы не использовать протобуф? Потому что я считаю, что для Java-класса с сотнями существующих свойств создание нового совпадающего прототипного файла — это немного античеловеческо. Protostuff — это усовершенствованная версия Protobuf, которая позволяет сериализировать Java-объект напрямую, используя его в немногом похожем на Kyro, без столько промежуточных процессов, как Protobuf. Другие, такие как Hession, Java с сериализацией и т.д., говорят, имеют гораздо худшую производительность, чем Kryo и Protobuf, так что я не знаю, чего ожидать.
После простого теста я обнаружил, что разрыв был довольно заметен, поэтому решил, что нет необходимости проводить конкретную оценку. Вырежьте абзац из журнала и отправьте его — все это почувствуют.
стоимость времени равна System.nanoTime(); Все три — стандартные конфигурации без какой-либо конфигурации. Космический след после сериализации немного меньше, чем у protostuff, и оба значительно выше, чем у JSON. Это легко понять, ведь строки JSON читаемы, не навязывают слишком сильно. Время, необходимое для сериализации и десериализации, лучше, чем у Kyro, чем на FastJSON, и разница довольно очевидна.
Итак, в заключение, если нет крайне требовательных требований к пространству, Protostuff может быть лучшим выбором. Protostuff имеет дополнительное преимущество перед Kyro: если java-класс добавляет поля после сериализации и до десериализации (что неизбежно в реальном бизнесе), Kyro будет бесполезен. Однако прототип можно использовать, если он добавлен в конце класса и использует JDK серии Sun Series. Поэтому, если сериализация используется в таких ситуациях, как кэш, и сериализированный объект нужно хранить долго, можно выбрать только protostuff.
Конечно, если нужна читаемость или что-то подобное, можно использовать только json.
|