Gerçekten konu güzel ve birkaç cevapları okuduktan sonra, ben bu konuda benim deneyler paylaşmak istiyorum.
Ben bazı "büyük" masa Ben veritabanına konuşmak hemen hemen her zaman (sadece bir gerçeği neden sormayın) sorgulanacak gereken bir kullanım dava var. Bu farklı istekleri önbelleğe olacak gibi veritabanı önbellek sistemi uygun değildir, bu yüzden hakkında olsa php önbelleğe alma sistemleri.
Ben denedim apcu
ama ihtiyaçlarına uymayan, bellek bu durumda güvenilir yeterli değildir. Sonraki adım, serileştirme ile bir dosyaya önbelleğe oldu.
Tablo 18 sütun, bu tefrika önbelleği okuma benim testleri ve istatistikler vardır ile 14355 girişleri vardır:
JSON:
Tüm söylediğim gibi, birlikte büyük bir rahatsızlık json_encode
/ json_decode
bir StdClass
örneği (ya da Nesne) için her şeyi dönüştüren olmasıdır. Eğer döngü bu gerekiyorsa, bir dizi dönüştürerek muhtemelen ne yapacağız, ve evet bu dönüşüm süresini arttırmak oluyor
ortalama süresi: 780,2 ms; Bellek kullanımı: 41.5MB; önbellek dosya boyutu: 3.8MB
Msgpack
@ Baraka bahseder msgpack. Oldukça sitesi. Adlı bir deneyelim bunu vereyim?
ortalama süresi: 497 ms; Bellek kullanımı: 32MB; önbellek dosya boyutu: 2,8 MB
Bu daha iyi, ama yeni bir uzantısı gerektirir; bazen korkar insanlar derleme ...
IgBinary
@ GingerDog bahseder igbinary. Ben dosya boyutu daha performansları okuma hakkında daha fazla bakım çünkü igbinary.compact_strings=Off
kurdum unutmayın.
ortalama süresi: 411.4 ms; Bellek kullanımı: 36.75MB; önbellek dosya boyutu: 3.3MB
Msg paketinden daha iyi. Yine de, bu bir çok derleme gerektirir.
serialize
/unserialize
ortalama süresi: 477.2 ms; Bellek kullanımı: 36.25MB; önbellek dosya boyutu: 5.9MB
JSON daha iyi performanslar, büyük dizi yavaş json_decode
zaten yeni, ama vardır.
Bu dış uzantıları dosya boyutunu daraltarak ve kağıt üzerinde harika görünüyor vardır. Sayılar * yalan söylemez. Eğer standart bir PHP fonksiyonu ile olurdu hemen hemen aynı sonuçları elde eğer bir uzantısı derleme ne anlamı var?
Biz de sizin ihtiyaçlarınıza bağlı olarak, bir başkası daha farklı bir şey tercih edeceğini anlamak olabilir:
- IgBinary gerçekten güzel ve MsgPack daha iyi yapar
- Msgpack is better at compressing your datas (note that I didn't tried the igbinary
compact.string option).
- Derlemek istemiyor musunuz? Standartlarını kullanın.
İşte bu, size birini seçmenize yardımcı olmak için başka bir serileştirme yöntemleri karşılaştırma!
Sadece standart hardrive ve eski çift çekirdekli işlemci ile çözme - - senin istatistikleri farklı olabilir 10 aynı kullanım durumunda testler, ortalama sayılar * PHPUnit 3.7.31, php 5.5.10 ile test edilmiştir