Ne senaryolar yılında serialize kullanmak json_encode () daha kullanmak () daha iyidir?

3 Cevap

Bu konuda ben sormak yeter. PHP manuel kontrol ve serialize (o bazı kriterler koştu) json_encode göre 45-90% daha yavaş olduğunu söyleyerek bir kullanıcı yazı gördüm. Ama nasıl "yavaş" yavaş? Ben "karşı" bir sürü etrafında yayılan bulabilirsiniz ama benim gibi bir acemi ile ilgili olabilir hiçbiri.

Ben sadece bunu çözmek için json ve başka birinde bir dizi kodlanan bir senaryo yazdı. Ben, tefrika ile aynı yaptım. Obviuously bu bana bunların arasında anlamlı farklılıklar söylemeyeceğim.

3 Cevap

Eğer bir uygulama ve başka arasında veri aktarımı yapıyorsanız, sonradan olarak JSON encoded verileri yerine PHP serialized verilerini kullanmak için hemen hemen her zaman genellikle daha iyi taşınabilir PHP özgü değil, bir biçimdir JSON gibi.

Hatta sunucu hem de istemci PHP tabanlı hem bir durumda, bu sunucudan yanıt biçimini değiştirmek zorunda kalmadan gelecekte yeni müşteriler yaratılmasına izin verecek JSON gibi taşınabilir biçimi kullanmak için yararınadır.

Kendimi herhangi bu iki kıyaslama yapılabilir, ama bu json kodlamayı buluyoruz eğer bunu kullanmak için tüm fazla nedeni daha serileştirme daha hızlı değil.

Bu seri hale getirilmiş verileri daha okumak daha kolay ve hızlı bir şekilde görselleştirilmeye kundakçı içine atılmış olabilir gibi Ayrıca, ben JSON kodlanmış veri tercih.

Do that (umarım) bellek kullanımı ve CPU zaman hem de farklılıkların ölçülebilir bir fikir almak için 10,000 kez (her biri).

Çoğunlukla fark performans açısından önemli olmayacaktır. JSON kullanarak iki özel durumlarda yararlıdır: (Web hizmetleri ve diğer yollarla) bir Web tarayıcısına ve diğer uygulamalar ile birlikte çalışabilirlik için PHP-dışı platformlarda özellikle iade.

Sadece nesneler / dizinin birkaç serialize / kodladığınızda, ben hız farkı önemli olmayacağını söyleyebilirim: Eğer genherally algıladıkları olmaz.

Fark serialize özellikle PHP için yapılmış olduğu; Örneğin, sınıflar gibi bilgi sur, tefrika ile kaybolmaz ve unserializing zaman alınabilir.

Birincil kullanımı Javascript ve PHP arasındaki veri alışverişi için varlık - Öte yandan, JSON iyi bir değişim biçimi olduğu anlamına gelir, PHP özgü değildir.


For instance, consider this piece of code :

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

$test = new A(10);

Şimdi, $ testi seri ve unserialize atalım:

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

Biz olsun:

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

A sınıfı yani, bir nesne, örneği


Now, let's do the same with JSON :

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

Biz şimdi sadece stdClass bir örneği var:

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

JSON ('A sınıfı' nformation PHP için önemli olduğunu, ama muhtemelen başka bir uygulama için çok mantıklı yok) veri alışverişi için güzel; ama çok kendi sınırlamaları vardır.