V jaké scénáře je lepší použít json_encode () než použít serializovat ()?

hlasů
27

To je asi tak všechno, co je třeba se ptát. Zkontroloval Manuál PHP a viděl, že uživatel po říká, že serializaci je 45-90% pomalejší než json_encode (běžel některé měřítka). Ale jak „pomalu“ je pomalý? Najdu spoustu „versus“ věci rozlehlé kolem, ale žádný z nich začátečník jako já může týkat.

Jen jsem napsal skript, který zakódované pole v JSON a druhá ho dekódovat. Udělal jsem to samé s serializaci. Obviuously, že nebude mi žádné významné rozdíly mezi nimi.

Položena 21/09/2009 v 02:50
uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

Udělej to 10.000 krát (každý) do (snad) dostat měřitelné představu o rozdílech v obou využití paměti a procesorového času.

Většinou rozdíl nebude významný z hlediska výkonu. Pomocí JSON je užitečná ve dvou konkrétních případech: pro návrat do webového prohlížeče a pro spolupráci s ostatními aplikacemi (prostřednictvím webových služeb a jiných prostředků), zejména těch, na non-PHP platformy.

Odpovězeno 21/09/2009 v 02:55
zdroj uživatelem

hlasů
1

Pokud přenos dat mezi jednotlivými aplikacemi jiný, je to většinou téměř vždy lepší používat JSON kódovaných dat spíše než PHP Serializovaná údaje byly později je formát specifický pro PHP a ne jako přenosný JSON.

Dokonce i v situaci, kdy server i klient jsou oba PHP-based, to sluší použít přenosný formát jako JSON umožnit vznik nových klientů v budoucnu, aniž byste museli změnit formát odpovědi ze serveru.

Neudělal jsem žádnou srovnávání těchto dvou sám, ale pokud jste zjištění, že kódování JSON je rychlejší než serializaci, než jen další důvod ji používat.

Také dávám přednost JSON kódovaná data, protože je čitelnější než serializovaném dat a mohou být rychle hozen do Firebug být zobrazeny.

Odpovězeno 21/09/2009 v 03:05
zdroj uživatelem

hlasů
2

Když si jen kódování / serializaci několik objektů / pole, řekl bych, že rozdíl v rychlosti nebude tak důležité: vy genherally nebudete vnímat.

Rozdíl je v tom, že serialize je vyroben speciálně pro PHP; Například informace sur jako třídy nejsou ztraceny při serializaci a mohou být vyvolány při unserializing.

Na druhou stranu, JSON není specifický pro PHP, což znamená, že je to dobrý formát výměny - jeho primární použití je pro výměnu dat mezi JavaScript a PHP.


Například, považují tento kus kódu:

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

$test = new A(10);

Nyní se pojďme serializaci a unserialize $ test:

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

Dostaneme :

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

tj, objekt, instance třídy A.


Nyní se pojďme udělat to samé s JSON:

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

V současné době máme jen instanci stdClass:

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

JSON je příjemné pro výměnu dat (dále jen ‚třída A‘ nformace je důležité pro PHP, ale pravděpodobně nemá moc smysl pro jiné aplikace); ale má svá omezení příliš.

Odpovězeno 21/09/2009 v 03:07
zdroj uživatelem

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