Ne bir PHP sunucu üzerinde daha az yük koyar: SimpleXML veya json_decode?

3 Cevap php

Ben inanılmaz derecede popüler olmuştur ve ben ünlü ve zengin hale umuyoruz PHP bir web uygulaması geliştirmek için başlıyorum. :-)

O zaman gelirse, SimpleXML ile XML olarak API verilerini ayrıştırmak için veya json_decode kullanmak ister benim kararım uygulamanın ölçeklenebilirlik bir fark yaratabilir.

Herkes sunucu için daha verimli bu yaklaşımlardan hangisinin biliyor mu?

Update: Ben yöntem daha performanslı olduğu görmek için bir ilkel testi koştu. Bu json_decode biraz daha hızlı bir yürütme simplexml_load_string fazla olduğu görülmektedir. Bu eşzamanlı süreçler ölçeklenebilirlik gibi şeyleri test değil çünkü bu korkunç kesin değildir. Benim sonuç Çünkü XPath ifadeleri için verdiği destek olmanın kez SimpleXML ile gidecek olmasıdır.

<?php

$xml  = file_get_contents('sample.xml');
$json = file_get_contents('sample.js');

$iters = 1000;

// simplexml_load_string
$start_xml = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
}
$end_xml = microtime(true);

// json_decode
$start_json = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
    $obj = json_decode($json);
}
$end_json = microtime(true);

?>
<pre>XML elapsed: <?=sprintf('%.4f', ($end_xml - $start_xml))?></pre>
<pre>JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?></pre>

Sonuç:

XML elapsed: 9.9836
JSON elapsed: 8.3606

3 Cevap

"Hafif" biçimi olarak, ben JSON biraz daha az stresli sunucuda olmasını beklersiniz, ama kendinizi sitenizin popülerlik büyüdükçe ile ilgili bulmak büyük performans sorunu olacağını sanmıyorum. Eğer daha rahat konum hangisi biçimi kullanın.

Eğer verilerinizi yapılanma nasıl olacak biliyorum Alternatif olarak, bir XML biçimli sürümü ve JSON biçimli bir sürümünü yaparak deneyebilirsiniz ve sadece bir fark yaparsa görmek için kurulum birkaç yüz bin kere karşı çalıştırın.

Veri ile uygulama sunucu üzerinde daha kolay olacak belirlemek için tek bir yolu var.

Test edin!

Ben tercüme olacak ne benzer bazı verileri oluşturmak ve anlamlı sonuçlar elde etmek için yeterli SimpleXML ve json_decode her kullanarak bunu birkaç bin kez çözmek için birim test çerçeveler birini kullanmak istiyorum. Ve sonra çalıştı bize ne söyleyebilirsiniz.

Maalesef bu tam aradığınız cevap tür değildir, ama gerçekte, bunu yapmak için tek doğru yoldur. İyi şanslar!

Eğer sistem isabet birçok kullanıcıya kadar bir soruya cevabı, ama sen gerçekten sadece bekleyebilirdi. Lütfen darboğazları aslında yalan nerede sürpriz olabilir:

http://gettingreal.37signals.com/ch04_Scale_Later.php