55 votes

L'analyse JSON est plus rapide que l'analyse XML

Je suis de la création d'un système sophistiqué de la bibliothèque JavaScript pour travailler avec mon serveur côté du cadre.

Du côté serveur, cadre encode ses données à un simple format XML. Il n'y a pas de fantaisie namespacing ou quelque chose comme ça.

Idéalement, j'aimerais analyser toutes les données dans le navigateur sous forme de JSON. Cependant, si je fais cela, j'ai besoin de réécrire certains de la partie serveur de code aussi cracher du JSON. C'est une douleur parce que nous avons des Api publiques que je ne peux pas changer facilement.

Ce que je suis vraiment préoccupé par ici la performance dans le navigateur de l'analyse JSON dans le langage XML. Est-il vraiment une grande différence pour s'en inquiéter? Ou devrais-je aller exclusivement pour JSON? Quelqu'un a une expérience ou de points de référence dans la différence de performances entre les deux?

Je me rends compte que la plupart des modernes, les développeurs web serait probablement opter pour JSON et je peux voir pourquoi. Cependant, je suis vraiment juste intéressé par la performance. Si il y a une expérience éprouvée énorme différence, alors je suis prêt à dépenser de l'effort dans la génération de JSON côté serveur pour le client.

32voto

treeface Points 7972

JSON doit être plus rapide car il est JS Object Notation, ce qui signifie qu'il peut être reconnu en natif par JavaScript. En PHP sur le côté des choses, je vais souvent faire quelque chose comme ceci:

<script type="text/javascript">
    var data = <?php json_encode($data)?>;
</script>

Pour plus d'informations sur cette question, voir ici:

Pourquoi est-ce que Chacun de Choisir JSON XML avec jQuery?

Aussi...que "effort supplémentaire" voulez-vous vraiment mettre en "génération" JSON? Sûrement vous ne pouvez pas dire que vous serez manuellement la construction de la chaîne JSON? Presque tous les modernes langage côté serveur a des bibliothèques qui convertir natif des variables dans les chaînes JSON. Par exemple, PHP json_encode fonction convertit un tableau associatif comme ceci:

$data = array('test'=>'val', 'foo'=>'bar');

en

{"test": "val", "foo": "bar"}

Qui est tout simplement un objet JavaScript (car il n'y a pas de tableaux associatifs (à proprement parler) en JS).

19voto

geme_hendrix Points 287

Tout d'abord, je tiens à dire merci à tous ceux qui ont répondu à ma question. J'ai VRAIMENT apprécier toutes vos réponses.

En ce qui concerne cette question, j'ai effectué quelques recherches approfondies par l'exécution de certains tests. L'analyse qui se passe dans le navigateur. IE 8 est le seul navigateur qui n'est pas un natif de parser JSON. Le XML est les mêmes données que la version JSON.

Chrome (version 8.0.552.224), JSON: 92ms, XML: 90ms

Firefox (version 3.6.13), JSON: 65ms, XML: 129ms

IE (version 8.0.6001.18702), JSON: 172ms, XML: 125ms

Il est intéressant de noter, Chrome semble être à peu près à la même vitesse. Veuillez noter que ceci est de l'analyse d'un grand nombre de données. Avec des bribes de données, ce n'est probablement pas une grosse affaire.

9voto

justkt Points 8976

Cas-tests ont été fait. En voici une. La différence de quelques-uns des premiers navigateurs qui semblait être tout un ordre de grandeur (de l'ordre de 10 millisecondes au lieu de 100s de ms), mais n'est pas massif. C'est en partie dans le temps de réponse du serveur XML est volumineux comme un format de données. Elle est en partie l'analyse temps - JSON permet d'envoyer des objets en JavaScript, alors que XML nécessite l'analyse d'un document.

Vous pourriez envisager d'ajouter à votre API publique une méthode de retour JSON au lieu de modifier les fonctions existantes si elle devient et le problème, à moins que vous ne voulez pas exposer le JSON.

Voir aussi la DONC, la question Quand à préférer JSON XML?

4voto

Anon Points 1946

Les performances ne sont pas vraiment une considération, en supposant que vous ne parlez pas de gigaoctets de XML. Oui, cela prendra plus de temps (XML est plus détaillé), mais ce ne sera pas quelque chose que l'utilisateur remarquera.

Le vrai problème, à mon avis, est le support de XML dans JavaScript. E4X est bien, mais il n'est pas supporté par Microsoft. Vous devrez donc utiliser une bibliothèque tierce (telle que JQuery) pour analyser le code XML.

1voto

FatherStorm Points 5332

JSON étant natif et conçu POUR Javascript, il va surpasser les analyses XML tout au long de la journée. vous n'avez pas mentionné votre langue côté serveur, en PHP, il y a la fonctionnalité json_encode / json_decode intégrée au noyau PHP ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X