In welke scenario's is het beter om json_encode () dan gebruiken om serialize () gebruiken?

stemmen
27

Dat is ongeveer alles wat ik nodig heb om te vragen. Gecontroleerd de PHP handleiding en zag een gebruiker na te zeggen dat serialize is 45-90% langzamer dan json_encode (hij liep een aantal benchmarks). Maar hoe traag is traag? Ik kan een heleboel versus stuff uitgestrekte rond vinden, maar die geen van alle een beginner als ik kan herkennen.

Ik schreef gewoon een script dat een array in JSON en een ander om het te decoderen gecodeerd. Ik deed hetzelfde met serialize. Obviuously dat zal me niet vertellen geen significante verschillen tussen hen.

De vraag is gesteld op 21/09/2009 om 02:50
user
In andere talen...                            


3 antwoorden

stemmen
3

Doe dat 10.000 keer (elk) tot en met (hopelijk) krijgen een meetbaar idee van de verschillen in zowel geheugengebruik en CPU-tijd.

Meestal zal het verschil niet significant in termen van prestaties. Met behulp van JSON is bruikbaar in twee bijzondere omstandigheden: voor de terugkeer naar een webbrowser en voor interoperabiliteit met andere applicaties (via webservices en andere middelen), met name die op niet-PHP platforms.

antwoordde op 21/09/2009 om 02:55
bron van user

stemmen
1

Als u de overdracht van zijn gegevens tussen een applicatie en een ander, is het meestal bijna altijd beter om te gebruiken JSON gecodeerde gegevens in plaats van PHP geserialiseerde gegevens als het later is een format, specifiek voor PHP en niet zo draagbaar als JSON.

Zelfs in een situatie waarin zowel de server als client zijn beide PHP-gebaseerde, het betaamt u naar een draagbaar formaat zoals JSON gebruiken om de creatie van nieuwe klanten in de toekomst mogelijk te maken zonder te hoeven reactie formaat veranderen van de server.

Ik heb geen enkele benchmarking van deze twee zelf gedaan, maar als je het vinden dat JSON-codering is sneller dan serialization, dan des te meer reden om het te gebruiken.

Ook geef ik de voorkeur JSON gecodeerde gegevens zoals het is makkelijker te lezen dan geserialiseerde gegevens en kan snel in Firebug worden geworpen te worden gevisualiseerd.

antwoordde op 21/09/2009 om 03:05
bron van user

stemmen
2

Wanneer u alleen coderen / serialize een paar objecten / array, zou ik zeggen dat het verschil in snelheid zal niet zo belangrijk: je genherally zal het niet waarnemen.

Het verschil is dat serialize is speciaal gemaakt voor PHP; Zo worden gegevens sur de klassen niet verloren met serialize, en kan worden opgehaald wanneer unserializing.

Aan de andere kant, JSON is niet specifiek voor PHP, wat betekent dat het een goede uitwisselingsformaat - het primaire gebruik zijnde gegevens tussen Javascript en PHP te wisselen.


Kijk bijvoorbeeld naar dit stukje code:

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

$test = new A(10);

Nu, laten we serialize en unserialize $-test:

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

We krijgen :

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

dwz een voorwerp instantie van de klasse A.


Laten we nu hetzelfde doen met JSON:

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

We hebben nu slechts een voorbeeld van stdClass:

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

JSON is leuk om gegevens uit te wisselen (de 'klasse A' nformatie is belangrijk voor PHP, maar waarschijnlijk heeft niet veel zin om een ​​andere toepassing); maar heeft zijn beperkingen ook.

antwoordde op 21/09/2009 om 03:07
bron van user

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