Σε ποια σενάρια είναι καλύτερο να χρησιμοποιήσετε json_encode () από το να χρησιμοποιούν serialize ();

ψήφοι
27

Αυτό είναι περίπου το μόνο που χρειάζεται να ρωτήσω. Ελέγχεται το εγχειρίδιο PHP και είδε μια θέση χρήστης λέγοντας ότι serialize είναι 45-90% πιο αργή από ό, τι json_encode (έτρεξε κάποια σημεία αναφοράς). Αλλά πώς «αργή» είναι αργή; Μπορώ να βρείτε πολλά «έναντι» πράγματα κατάκλισης γύρω, αλλά κανένας από τους οποίους ένας αρχάριος σαν εμένα μπορούν να αφορούν.

Μόλις έγραψα ένα σενάριο που κωδικοποιείται μια σειρά σε JSON και ένα άλλο για να το αποκωδικοποιήσει. Έκανα ίδια με serialize. Obviuously που δεν θα μου πείτε σημαντικές διαφορές μεταξύ τους.

Δημοσιεύθηκε 21/09/2009 στις 02:50
χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
3

Πιστεύετε ότι 10.000 φορές (το καθένα) έως (ελπίζουμε) να πάρετε μια μετρήσιμη ιδέα των διαφορών τόσο τη χρήση της μνήμης και του χρόνου της CPU.

Κυρίως η διαφορά δεν θα είναι σημαντική από την άποψη της απόδοσης. Η χρήση JSON είναι χρήσιμη σε δύο συγκεκριμένες περιπτώσεις: για την επιστροφή σε ένα πρόγραμμα περιήγησης στο Web και για τη διαλειτουργικότητα με άλλες εφαρμογές (μέσω των υπηρεσιών Web και άλλα μέσα), ιδίως εκείνων στις πλατφόρμες μη PHP.

Απαντήθηκε 21/09/2009 στις 02:55
πηγή χρήστη

ψήφοι
1

Αν μεταφέρετε δεδομένα μεταξύ μιας εφαρμογής και μια άλλη, είναι συνήθως σχεδόν πάντα καλύτερο να χρησιμοποιήσετε JSON κωδικοποιημένα δεδομένα και όχι PHP συνέχειες στοιχεία όπως η τελευταία είναι μια μορφή ειδικά για την PHP και όχι τόσο φορητό όσο και JSON.

Ακόμη και σε μια κατάσταση κατά την οποία ο διακομιστής και ο πελάτης είναι και οι δύο PHP με βάση, επιβάλλεται σε σας για να χρησιμοποιήσετε μια φορητή μορφή σαν JSON για να επιτρέψει τη δημιουργία νέων πελατών στο μέλλον, χωρίς να χρειάζεται να αλλάξετε τη μορφή απόκριση από το διακομιστή.

Δεν έχω κάνει καμία συγκριτική αξιολόγηση των δύο αυτών εαυτό μου, αλλά αν είστε διαπίστωση ότι η JSON κωδικοποίησης είναι πιο γρήγορα από ό, τι serialization, από όλες τις επιπλέον λόγο να το χρησιμοποιήσετε.

Επίσης, προτιμώ JSON κωδικοποιημένα δεδομένα, καθώς είναι πιο εύκολο να διαβάσει ό, τι σε συνέχειες δεδομένων και μπορεί γρήγορα να ρίχνονται σε Firebug για να απεικονιστεί.

Απαντήθηκε 21/09/2009 στις 03:05
πηγή χρήστη

ψήφοι
2

Όταν κωδικοποιήσει μόνο / συνέχειες ένα ζευγάρι των αντικειμένων / σειρά, θα έλεγα ότι η διαφορά στην ταχύτητα δεν θα είναι τόσο σημαντικό: θα genherally δεν θα το αντιληφθεί.

Η διαφορά είναι ότι serialize γίνεται ειδικά για την PHP? για παράδειγμα, πληροφορίες sur όπως τάξεις δεν χάνονται με serialize, και μπορούν να ανακτηθούν όταν unserializing.

Από την άλλη πλευρά, JSON δεν είναι ειδικά για την PHP, το οποίο σημαίνει ότι είναι μια καλή μορφή ανταλλαγής - κύρια χρήση της είναι για την ανταλλαγή δεδομένων μεταξύ Javascript και PHP.


Για παράδειγμα, σκεφτείτε αυτό το κομμάτι του κώδικα:

class A {
    public $a;
    public function __construct($a) {
        $this->a = $a;
    }
}

$test = new A(10);

Τώρα, ας συνέχειες και unserialize τεστ $:

var_dump(unserialize(serialize($test)));

Παίρνουμε :

object(A)[2]
  public 'a' => int 10

δηλαδή, ένα αντικείμενο, παράδειγμα της τάξης Α


Τώρα, ας κάνουμε το ίδιο με JSON:

var_dump(json_decode(json_encode($test)));

Τώρα έχουμε μόνο ένα παράδειγμα των stdClass:

object(stdClass)[2]
  public 'a' => int 10

JSON είναι ωραίο να ανταλλάσσουν δεδομένα (το «Α» κατηγορίας Πληροφόρηση είναι σημαντικό για την PHP, αλλά μάλλον δεν έχει και πολύ νόημα για μια άλλη εφαρμογή)? αλλά έχει τα όριά της πάρα πολύ.

Απαντήθηκε 21/09/2009 στις 03:07
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more