Σύντομη εισαγωγή
Αυτό το ιστολόγιο συγκρίνει κυρίως την απόδοση σειριοποίησης και αποσειριοποίησης των Xml, Json, Hessian και Protocol Buffers, αφήνοντας κατά μέρος τις βασικές έννοιες των Xml και Json. Hessian: Το Hessian είναι ένα ελαφρύ εργαλείο απομακρυσμένης onhttp που παρέχει λειτουργικότητα RMI χρησιμοποιώντας το δυαδικό πρωτόκολλο RPC και ενσωματωμένες δυνατότητες σειριοποίησης. Buffers πρωτοκόλλου: Μια μορφή για ανταλλαγή δεδομένων από την google, η οποία είναι ανεξάρτητη από τη γλώσσα και επειδή είναι δυαδική μορφή, είναι πολύ πιο γρήγορη από τη χρήση xml για ανταλλαγή δεδομένων και μπορεί να χρησιμοποιηθεί για επικοινωνία δεδομένων μεταξύ κατανεμημένων εφαρμογών ή ανταλλαγή δεδομένων σε ετερογενή περιβάλλοντα. Ως αποτελεσματική και συμβατή μορφή δυαδικής μετάδοσης δεδομένων, μπορεί να χρησιμοποιηθεί σε πολλούς τομείς όπως μετάδοση δικτύου, αρχεία διαμόρφωσης, αποθήκευση δεδομένων κ.λπ. Η Google παρέχει υλοποιήσεις Java, C++, Python και τώρα υπάρχουν υλοποιήσεις γλωσσών όπως η C# στο Διαδίκτυο.
Σειριοποίηση και αποσειριοποίηση
XML: Χρησιμοποιήστε το XmlSerializer που συνοδεύει το .Net. Json: Χρησιμοποιεί το ServiceStack.Text, το οποίο είναι πιο αποδοτικό από το Newtonsoft.Json, αλλά το ταχύτερο θα πρέπει να είναι fastJSON.net. Hessian: Χρησιμοποιώντας τη βιβλιοθήκη HessianCSharp, που λήφθηκε από το nuget. Buffers πρωτοκόλλου: Χρήση protobuf-net, λήψη από το nuget. Ακολουθούν οι οντότητες που χρησιμοποιούνται στη δοκιμή.
Ο επεξεργαστής i7HQ 2.6HZ που χρησιμοποιείται στη μηχανή δοκιμής. Εδώ είναι τα αποτελέσματα του τεστ Σειριοποίηση
Αποσειριοποίηση
Μήκος byte μετά τη σειριοποίηση
Ας μιλήσουμε πρώτα για σειριοποίηση, εδώ δοκιμάζεται με 100 φορές, 1000 φορές, 10000 φορές και 100000 φορές αντίστοιχα, η τεταγμένη είναι ο χρόνος ολοκλήρωσης, η μονάδα είναι χιλιοστά του δευτερολέπτου, μπορείτε να δείτε ότι κατά τη δοκιμή εντός 10000 φορές, η κατανάλωση χρόνου 4 ειδών σειριοποίησης είναι πολύ μικρή, όλα μέσα σε 200 χιλιοστά του δευτερολέπτου, μετά από 10000 φορές, έως 100000 φορές, όλα αρχίζουν να μεγαλώνουν, το χειρότερο είναι το Xml, το καλύτερο είναι τα Protocol Buffers, αλλά όταν είναι εντός 10000 φορές, Το Hessian είναι καλύτερο από τα Protocol Buffers. Δεν υπάρχει μεγάλη διαφορά μεταξύ 10.000 αποσειριοποιήσεων, αλλά στις 10.000 φορές, μπορούμε ήδη να δούμε ότι το Hessian είναι πιο χρονοβόρο και στις 100.000 φορές, το Hessian υπερβαίνει άμεσα το Xml, κάτι που με κάνει πάντα να πιστεύω ότι υπάρχει πρόβλημα με τον κώδικά μου και η καλύτερη απόδοση εξακολουθεί να είναι τα Protocol Buffers. Το σειριακό μήκος byte είναι κατανοητό το μεγαλύτερο σε Xml, επειδή το αρχείο περιέχει πολλές ετικέτες τέλους () και το</Name> Protocol Buffers εξακολουθεί να είναι το καλύτερο.
Με βάση το παραπάνω γράφημα, μπορούμε σχεδόν γρήγορα να συμπεράνουμε ότι το Protocol Buffers είναι το καλύτερο, αλλά νομίζω ότι πρέπει ακόμα να το αξιολογήσουμε διεξοδικά από τις ακόλουθες πτυχές: 1. Αναγνωσιμότητα: Το Xml και το Json είναι και τα δύο κείμενο μετά τη σειριοποίηση και η αναγνωσιμότητα είναι πολύ καλή, για παράδειγμα, εάν υπάρχει κάποιο λάθος στη μέση, μπορούμε εύκολα να δούμε τα δεδομένα που ανταλλάσσονται και ακόμη και να προσομοιώσουμε τα δεδομένα για δοκιμή. Τόσο το Hessian όσο και το Protocol Buffer είναι δυαδικά και το περιεχόμενο δεν είναι αναγνώσιμο μετά τη σειριοποίηση, γεγονός που θα έχει κάποιο αντίκτυπο στην αντιμετώπιση προβλημάτων του συστήματος. 2. Ευελιξία: Το XML και το JSON είναι ήδη παλιές μορφές ανταλλαγής δεδομένων και αυτές είναι οι δύο μορφές για την ανταλλαγή δεδομένων μεταξύ γενικών συστημάτων. Τόσο το Hessian όσο και το Protocol Buffer είναι σχετικά μη δημοφιλή και χρησιμοποιούνται λιγότερο. 3. Ευκολία: Το Hessian είναι στην πραγματικότητα ένα πλήρες πλαίσιο RPC, ορίστε τη διεπαφή από την πλευρά του διακομιστή και εφαρμόστε τη διεπαφή, αντιγράψτε τη διεπαφή στον πελάτη Μετά από μια μικρή ποσότητα κωδικοποίησης, μπορούμε να καλέσουμε την πλευρά του διακομιστή σαν να καλούμε μια τοπική μέθοδο, η οποία δεν είναι διαθέσιμη στα άλλα τρία εργαλεία και η απόδοση δεν είναι κακή.
|