За сериализацията на Java обект бих искал да тествам разликата между използването на JSON и използването на общи инструменти за сериализация по отношение на времевата и пространствената производителност.
JSON избира да използва fastJSON.
Инструментът за сериализация използва Protostuff и Kyro. Защо да не използваш Protobuf? Защото смятам, че за java клас със стотици съществуващи свойства, създаването на нов съвпадащ прототип файл е малко античовешко. Protostuff е подобрена версия на Protobuf, която ти позволява да сериализираш Java обект директно, използвайки го малко като Kyro, без толкова много междинни процеси, колкото Protobuf. Други, като Hession, Java с сериализация и др., се казва, че имат много по-лоша производителност от Kryo и Protobuf, така че не знам какво да очаквам.
След прост тест установих, че разликата е доста очевидна, затова почувствах, че няма нужда от конкретна оценка. Изрежи един параграф от дневника и го изпрати – всички го усещат.
cost time е System.nanoTime(); И трите са стандартни конфигурации без никаква конфигурация. Космическият отпечатък след сериализацията е малко по-нисък от този на protostuff, и двата са много по-големи от JSON. Това е лесно за разбиране, все пак JSON низовете са четливи, не натоварват прекалено много. Времето, необходимо за сериализация и десериализация, е по-добро от това на Kyro спрямо FastJSON, и разликата е доста очевидна.
В заключение, ако няма изключително високи изисквания за пространство, Protostuff може да е най-добрият избор. Protostuff има допълнително предимство пред Kyro, а именно, ако java класът добавя полета след сериализацията и преди десериализацията (което е неизбежно в реалния бизнес), Kyro ще бъде безполезен. Въпреки това, protostuff може да се използва, стига да се добави в края на класа и да използва слънчевата серия JDK. Следователно, ако сериализацията се използва в сценарии като кеш и сериализираният обект трябва да се съхранява дълго време, можете да изберете само protostuff.
Разбира се, ако има нужда от четливост или нещо подобно, можеш да използваш само json.
|