Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 14559|Odpowiedź: 0

[Źródło] Serializacja kryo/protobuf/protostuff w Java lub porównanie wydajności JSON

[Skopiuj link]
Opublikowano 15.07.2019 21:16:23 | | |
W przypadku serializacji obiektu Java chciałbym przetestować różnicę między użyciem JSON a ogólnymi narzędziami do serializacji pod względem wydajności czasowej i przestrzennej.

json wybiera fastjson.

Narzędzie do serializacji korzysta z Protostuff i Kyro. Dlaczego nie użyć protobufu? Bo uważam, że dla klasy Java z setkami istniejących właściwości tworzenie nowego dopasowanego pliku proto jest trochę antyludzkie. Protostuff to ulepszona wersja Protobuf, która pozwala bezpośrednio serializować obiekt Java, używając go trochę jak Kyro, bez tylu procesów pośrednich jak Protobuf. Inne, jak Hession, Java z serializacją itd., mają znacznie gorszą wydajność niż Kryo i Protobuf, więc nie wiem, czego się spodziewać.

Po prostym teście okazało się, że luka jest dość widoczna, więc uznałem, że nie ma potrzeby przeprowadzania konkretnej oceny. Wytnij akapit z dziennika i wyślij go, wszyscy to czują.

koszt czasu to System.nanoTime(); Wszystkie trzy są domyślnymi konfiguracjami bez żadnej konfiguracji.
Powierzchnia po serializacji jest nieco mniejsza niż w protostuff, a oba są znacznie większe niż w JSON. To łatwe do zrozumienia, w końcu ciągi jsonów są czytelne, nie wymuszaj zbyt wiele.
Czas potrzebny na serializację i deserializację jest lepszy niż w Kyro w porównaniu do FastJSON, a różnica jest dość oczywista.

Podsumowując, jeśli nie ma bardzo wymagających wymagań dotyczących przestrzeni, Protostuff może być najlepszym wyborem. Protostuff ma dodatkową przewagę nad Kyro, czyli jeśli klasa Java dodaje pola po serializacji i przed deserializacją (co jest nieuniknione w prawdziwym biznesie), Kyro będzie bezużyteczny. Jednak protostuff można używać, o ile zostanie dodany na koniec klasy i korzysta z serii sun JDK. Dlatego jeśli serializacja jest stosowana w scenariuszach takich jak cache, a obiekt serializowany musi być przechowywany przez długi czas, możesz wybrać tylko protostuff.

Oczywiście, jeśli jest potrzeba czytelności lub czegoś podobnego, możesz używać tylko json.




Poprzedni:asp.net Dostosowanie nazwy identyfikatora sesji
Następny:Porównanie wydajności Protobuf i JSON na platformie .NET
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com