Komentarz od Adama powyżej przekonał mnie do odniesienia nim. Korzystając z https://twitter.com/status/mentions.[format], stwierdziłem, że simplexml_load_string() jest SLIGHTLY szybszy niż json_decode(). Ale różnica jest praktycznie marginesem błędu.
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
kontra
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
na poniższym kodzie (gdzie ja już curl'ed dane do pliku, danych. [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>";
}
Dlaczego nie porównywać go samodzielnie z prawdziwymi zestawami danych, których będziesz używać? Wydajność parsera może być całkowicie zależna od tego, co ją podaje. –
Który z PHP xml-apis zamierzasz użyć? Domyślam się, że SimpleXML i DOM działają wolniej lub na równi z JSON, podczas gdy XMLReader lub SAX jest szybszy. –