PHP: JSON veya XML ayrıştırıcı daha hızlı?

6 Cevap php

Ben Twitter API ile arabirim sınıfları inşa ediyorum ve ben PHP yerleşik XML veya JSON parser hızlı olup olmadığını merak ediyorum? Twitter bana formatında ya aynı veri göndermek, böylece PHP performans benim seçim belirleyecek. Ben php_apc kullanıyorum, böylece ayrıştırma zaman göz ardı ve bayt kodu kapalı koşuyorum varsayabiliriz.

Teşekkürler!

Daha fazla: Ben sadece veri ilişkilendirilebilir diziler almak için arıyorum. Ben ağaç yürüme, düğüm yineleme ya da çok karmaşık bir şey yapmıyorum. Biçimi her zaman aynı olacaktır. (Umarım!)

6 Cevap

Ben herhangi bir kriter yapmak ama olmadı ...

JSON bir DOM arayüz sunmak için gerek kalmadan iç içe dize dizileri sadece bir açıklama olduğu, nitelikleri ayrıştırma ve diğer ince şeyler, benim tahminim bir JSON ayrıştırıcı WAY hızlı bir XML ayrıştırıcı olduğu olmasıdır.

Adem'den yorum yukarıdaki kriter için beni ikna etti. Https://twitter.com/status/mentions kullanma. [Biçim], I () simplexml_load_string BIRAZ hızlı json_decode daha () olduğunu buldu. Ama fark pratikte bir hata marjı olduğunu.

Test #1 time (xml): 3.75221395493 seconds
Test #2 time (xml): 4.1562371254 seconds
Test #3 time (xml): 3.60420489311 seconds
Test #4 time (xml): 3.85622000694 seconds
Test #5 time (xml): 3.89622211456 seconds

karşı

Test #1 time (json): 4.53225803375 seconds
Test #2 time (json): 4.06823205948 seconds
Test #3 time (json): 4.03222990036 seconds
Test #4 time (json): 3.80421590805 seconds
Test #5 time (json): 3.88022208214 seconds

Aşağıdaki kodu (zaten bir dosyaya veri curl'ed ettik, veri. [xml, json]).

<?php

$test = 'json';  //xml or json
$data = implode(file("data.".$test),"\r\n");

for ($t=1; $t<=5; $t++) {
    $start[$t] = microtime(1);
    for ($i=0; $i<3000; $i++) {
    	if ($test == 'xml') $xml = simplexml_load_string($data);
    	else $json = json_decode($data);
    }
    $end[$t] = microtime(1);
    echo "<p>Test #{$t} time ({$test}): " . ($end[$t] - $start[$t]). " seconds</p>";
}

Ben json dönüş bir nesne olduğu zaman simplexml_load_string () json_decode daha hızlıdır () bulmak eğilimindedir.

(Nesneler için dizileri karşılaştırırken çoğu şeyi PHP ile olduğu gibi) Ancak, json sahip (true $ string) json_decode kullanarak bir dizi olarak döndürülür aslında bir nesne kullanarak çok daha hızlıdır.

Ive () bu şartlar altında) iki kat daha hızlı (simplexml_load_string olarak üzerinde olan json_decode görüldü.

Cevap onu kullanmayı planlıyorsanız nasıl bağlıdır. Bazı isteği oluşturmak ve PHP script içinde onları işleyecek eğer Yani, XML çok daha hızlı olacağına inanıyorum. Ama sen XML için vekil olacak ise de bir nesneler gibi, geri arama fonksiyonları ile çapraz etki isteğini destekler JavaScript'den JSON sonucu otomatik temsilini fayda yana, sen JSON kullanarak düşünmelisiniz aramaları ve sonuç sonraki süreç oluşturmak ve AJAX düşünüyor kez .

Eğer bant genişliği tasarruf senaryonuzun performansını etkileyebilir genel olarak nasıl düşündünüz mü? Talepleriniz kullanarak zaman önemli miktarda tekrarlanması olacak eğer json sağlam ekonomik seçenek olmalıdır.

JSON boyut olarak çok küçük olma eğilimindedir

Ayrıca bir kez json_decode çalıştırın ve daha sonra bir dizi başka işlevler için kullanılması gibi verilere erişmek.

Kriterler id JSON ile gitmek çalıştırmadan hızlıdır