Je commence à développer une application web en PHP qui, je l'espère, deviendra incroyablement populaire et me rendra célèbre et riche. :-)Qu'est-ce qui met moins de charge sur un serveur PHP: SimpleXML ou json_decode?
Si ce moment arrive, ma décision d'analyser les données API en XML avec SimpleXML ou d'utiliser json_decode pourrait faire la différence dans l'évolutivité de l'application.
Est-ce que quelqu'un sait laquelle de ces approches est la plus efficace pour le serveur?
Mise à jour: J'ai effectué un test rudimentaire pour voir quelle méthode était la plus performante. Il semble que json_decode
est légèrement plus rapide que simplexml_load_string
. Ce n'est pas très concluant car il ne teste pas des choses comme l'évolutivité des processus concurrents. Ma conclusion est que je vais aller avec SimpleXML pour le moment en raison de sa prise en charge des expressions XPath.
<?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>
Résultat:
XML elapsed: 9.9836
JSON elapsed: 8.3606
Votre référence n'est pas très réaliste. Sûrement, vous allez manipuler les données d'une manière ou d'une autre, pas seulement le charger? Au moins, essayez d'itérer à travers quelques valeurs ou quelque chose. Le temps de chargement n'est probablement pas la majeure partie du traitement que vous finirez par faire. –