Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 14559|Απάντηση: 0

[Πηγή] Java kryo/protobuf/protostuff σειριοποίηση ή σύγκριση απόδοσης JSON

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 15/7/2019 9:16:23 μ.μ. | | |
Για τη σειριοποίηση ενός αντικειμένου Java, θα ήθελα να δοκιμάσω τη διαφορά μεταξύ της χρήσης JSON και της χρήσης γενικών εργαλείων σειριοποίησης όσον αφορά τη χρονική και χωρική απόδοση.

Ο JSON επιλέγει να χρησιμοποιήσει το FastJSON.

Το εργαλείο σειριοποίησης χρησιμοποιεί το Protostuff και το Kyro. Γιατί να μην χρησιμοποιήσετε το protobuf; Επειδή πιστεύω ότι για μια κλάση java με εκατοντάδες υπάρχουσες ιδιότητες, η δημιουργία ενός νέου αντίστοιχου αρχείου πρωτοτύπου είναι λίγο αντιανθρώπινη. Το Protostuff είναι μια βελτιωμένη έκδοση του Protobuf, η οποία σας επιτρέπει να σειριοποιήσετε απευθείας ένα αντικείμενο Java, χρησιμοποιώντας το σε κάτι σαν το Kyro, χωρίς τόσες ενδιάμεσες διεργασίες όπως το Protobuf. Άλλα, όπως το Hession, η Java με σειριοποίηση κ.λπ., λέγεται ότι έχουν πολύ χειρότερες επιδόσεις από το Kryo και το Protobuf, οπότε δεν ξέρω τι να περιμένω.

Μετά από ένα απλό τεστ, διαπίστωσα ότι το κενό ήταν αρκετά εμφανές, οπότε ένιωσα ότι δεν χρειαζόταν να κάνω συγκεκριμένη αξιολόγηση. Κόψτε μια παράγραφο από το ημερολόγιο και στείλτε το, όλοι το νιώθουν.

Ο χρόνος κόστους είναι System.nanoTime(); Και οι τρεις είναι οι προεπιλεγμένες διαμορφώσεις χωρίς καμία διαμόρφωση.
Το διαστημικό αποτύπωμα μετά τη σειριοποίηση είναι ελαφρώς χαμηλότερο από αυτό του πρωτοκειμένου, και τα δύο είναι πολύ υψηλότερα από το JSON. Αυτό είναι εύκολο να το καταλάβουμε, άλλωστε οι συμβολοσειρές json είναι ευανάγνωστες, μην πιέζετε πολύ.
Ο χρόνος που απαιτείται για τη σειριοποίηση και την αποσειριοποίηση είναι καλύτερος από το Kyro έναντι του FastJSON και η διαφορά είναι αρκετά εμφανής.

Συμπερασματικά λοιπόν, αν δεν υπάρχουν εξαιρετικά απαιτητικές απαιτήσεις για χώρο, το Protostuff μπορεί να είναι η καλύτερη επιλογή. Το Protostuff έχει ένα επιπλέον πλεονέκτημα έναντι του Kyro, δηλαδή, εάν η κλάση java προσθέσει πεδία μετά τη σειριοποίηση και πριν από την αποσειριοποίηση (κάτι που είναι αναπόφευκτο στις πραγματικές επιχειρήσεις), το Kyro θα είναι άχρηστο. Ωστόσο, το πρωτότυπο υλικό μπορεί να χρησιμοποιηθεί αρκεί να προστεθεί στο τέλος του μαθήματος και να χρησιμοποιεί τη σειρά ήλιου JDK. Επομένως, εάν η σειριοποίηση χρησιμοποιείται σε σενάρια όπως η προσωρινή μνήμη και το σειριακό αντικείμενο πρέπει να αποθηκευτεί για μεγάλο χρονικό διάστημα, μπορείτε να επιλέξετε μόνο πρωτότυπο.

Φυσικά, εάν υπάρχει ανάγκη για αναγνωσιμότητα ή κάτι τέτοιο, μπορείτε να χρησιμοποιήσετε μόνο το json.




Προηγούμενος:asp.net Προσαρμόστε το όνομα του αναγνωριστικού περιόδου λειτουργίας
Επόμενος:Σύγκριση απόδοσης Protobuf και JSON στην πλατφόρμα .NET
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com