Az, hogy milyen forgatókönyvek ez jobban használható json_encode (), mint használni serialize ()?

szavazat
27

Ez minden kell tennem. Ellenőrizte a PHP kézikönyv, és látta, hogy egy felhasználó utáni mondván, hogy serialize van 45-90% -kal lassabb, mint json_encode (futott néhány viszonyítási). De hogyan „lassú” lassú? Találok egy csomó „versus” cucc burjánzó körül, de egyik sem a kezdő, mint én is kapcsolódnak.

Írtam egy forgatókönyvet, hogy kódolt tömb JSON és egy másik dekódolni. Én ugyanazt a serialize. Obviuously hogy nem mondja meg jelentős különbség van köztük.

A kérdést 21/09/2009 02:50
felhasználó
Más nyelveken...                            


3 válasz

szavazat
3

Ne, hogy 10.000-szer (mindegyik) a (remélhetőleg), hogy mérhető ötlet eltérések mutatkoztak a memóriahasználat és a CPU időt.

Többnyire a különbség nem jelentős a teljesítmény tekintetében. Segítségével JSON hasznos két különleges körülmények között: a visszatérés egy webböngészőt, és az interoperabilitás más alkalmazások (web szolgáltatások és más eszközökkel), különösen a nem PHP platformokon.

Válaszolt 21/09/2009 02:55
a forrás felhasználó

szavazat
1

Ha adatok átvitele között egy alkalmazás és egy másik, ez általában szinte mindig jobb használni JSON kódolt adatok helyett PHP szerializált adatok a későbbi olyan formátum egyedi PHP és nem hordozható JSON.

Még egy olyan helyzetben, ahol mind a szerver és a kliens egyaránt PHP-alapú, így illik, hogy egy hordozható formában, mint a JSON, hogy az új ügyfelek a jövőben anélkül, hogy változtatni válasz formátuma a szerverről.

Nem tettem semmilyen benchmarking két magam, de ha megállapította, hogy a JSON kódolás gyorsabb, mint a sorszámozás, mint az összes több ok arra, hogy használja azt.

Azt is inkább JSON kódolt adatokat, mert könnyebb olvasni, mint szerializált adatok és gyorsan lehet dobni firebug láthatóvá tehető.

Válaszolt 21/09/2009 03:05
a forrás felhasználó

szavazat
2

Ha csak kódolni / sorosításához pár tárgyak / tömb, azt mondanám, hogy a sebességkülönbség nem lesz olyan fontos: ha genherally nem érzékeli azt.

A különbség az, hogy serialize készül különösen a PHP; Például információt sur osztályokat nem vesznek serialize, és lehet letölteni, ha unserializing.

Másrészt, a JSON nem jellemző, hogy a PHP, ami azt jelenti, hogy ez egy jó csereformátumot - elsődleges felhasználási forma közötti adatcserére Javascript és PHP.


Például tekintsük ezt a kódrészletet:

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

$test = new A(10);

Most nézzük sorosításához és unserialize $ teszt:

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

Kapunk :

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

vagyis egy tárgy, például az A osztályból


Most nézzük ugyanezt a JSON:

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

Most csak egy példánya stdClass:

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

JSON szép adatcserére (az „osztály” NFORMÁCIÓK fontos a PHP, de valószínűleg nem sok értelme egy másik alkalmazás); de megvannak a korlátai is.

Válaszolt 21/09/2009 03:07
a forrás felhasználó

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