W jakiej scenariusze lepiej jest użyć json_encode () niż korzystać serialize ()?

głosy
27

To wszystko muszę zapytać. Sprawdzone instrukcję PHP i zobaczyłem post mówiąc, że użytkownik jest 45-90% serialize wolniej niż json_encode (biegł kilka wzorców). Ale jak „slow” jest wolny? Mogę znaleźć wiele „kontra” rzeczy rozciągnięty wokół, ale z których żaden początkujący jak ja może dotyczyć.

Właśnie napisałem skrypt, który zakodowaną tablicę w JSON i drugi, żeby go rozszyfrować. Zrobiłem to samo z serialize. Obviuously że nie powie mi żadnych znaczących różnic między nimi.

Utwórz 21/09/2009 o 02:50
użytkownik
W innych językach...                            


3 odpowiedzi

głosy
3

Zrobić 10000 razy (każdy) do (miejmy nadzieję) uzyskać wymierny ideę różnic zarówno zużycia pamięci i czasu procesora.

Głównie różnica nie będzie znacząca pod względem wydajności. Korzystanie JSON jest przydatna w dwóch szczególnych okolicznościach: na powrocie do przeglądarki internetowej i współdziałanie z innymi aplikacjami (za pośrednictwem usług internetowych i innych środków), zwłaszcza na platformach innych niż PHP.

Odpowiedział 21/09/2009 o 02:55
źródło użytkownik

głosy
1

Jeśli przesyłanie danych między jednym a drugim wniosku, to zwykle prawie zawsze lepiej używać JSON zakodowane dane zamiast PHP odcinkach dane jak później to format specyficzny dla PHP, a nie jako przenośny jako JSON.

Nawet w sytuacji, gdy zarówno serwer, jak i klient są zarówno opartych na PHP, to wypada korzystanie z przenośnego formatu jak JSON, aby umożliwić tworzenie nowych klientów w przyszłości bez konieczności zmiany formatu odpowiedzi z serwera.

Nie robiłem żadnych badań porównawczych tych dwóch siebie, ale jeśli jesteś uznając, że kodowanie JSON jest szybsza niż serializacji, niż kolejny powód, aby ją wykorzystać.

Również wolę JSON zakodowane dane, ponieważ jest to łatwiejsze do odczytania niż serializowanym danych i szybko mogą być wyrzucane do Firebug być wizualizowane.

Odpowiedział 21/09/2009 o 03:05
źródło użytkownik

głosy
2

Gdy tylko zakodować / serializacji kilka obiektów / tablicy, powiedziałbym, że różnica prędkości nie będzie tak ważne: ty genherally nie będą postrzegać go.

Różnica polega na tym, że serialize jest specjalnie dla PHP; na przykład, informacje sur jako klasy nie są tracone z serialize i mogą być pobierane, gdy unserializing.

Z drugiej strony, JSON nie jest specyficzne dla PHP, co oznacza, że ​​jest to dobry format wymiany - jego podstawowym zadaniem jest wymiana danych pomiędzy JavaScript i PHP.


Na przykład, należy rozważyć ten kawałek kodu:

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

$test = new A(10);

Teraz niech unserialize $ serializacji i testy:

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

Otrzymujemy:

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

czyli obiekt, instancja klasy A.


Teraz zróbmy to samo z JSON:

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

Teraz mamy tylko wystąpienie stdClass:

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

JSON jest miły do ​​wymiany danych ( „Klasa A” NFORMACJE jest ważna dla PHP, ale chyba nie ma większego sensu dla innej aplikacji); ale ma też swoje ograniczenia.

Odpowiedział 21/09/2009 o 03:07
źródło użytkownik

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