Muitas das suposições sobre o quão lento, dispendioso e "gordo" o XML é se comparado à leveza do JSON, não foram sustentadas pelo teste feito por David Lee, engenheiro líder na Marklogic, após a execução de um experimento "crowd sourcing" com 33 documentos diferentes e aproximadamente 1200 testes, em uma grande quantidade de navegadores e sistemas operacionais mais utilizados. David afirma ter descoberto que o desempenho total da experiência de usuário ‒ transferência, análise (parsing) e consulta (querying) de um documento ‒ é quase idêntico em ambos os formatos: XML e JSON.
Para o seu experimento David criou e divulgou publicamente um ambiente de teste que imita um caso de uso em que documentos XML e JSON são entregues por um servidor web, para serem analisados e consultados em um navegador web. O servidor abastece o cliente com uma fonte de dados, e coleta os resultados provenientes do cliente. O cliente é uma aplicação JavaScript executada no navegador, codificada especificamente para medir performance, exceto a parte que faz as medições de desempenho do jQuery.
Além de usar sete documentos diferentes com tamanhos entre 100Kb e 1Mb, e cada documento apresentar duas variantes JSON e três variantes XML, David também tentou cobrir uma gama de dispositivos, navegadores, sistemas operacionais e redes em seu teste. Ele fez isso através de "crowd sourcing", ou seja, tornou pública a URL do ambiente de testes e divulgou em várias listas de e-mail e sites de mídia social. O resultado de aproximadamente 1200 testes distintos e bem sucedidos foram coletados até agora, abrangendo os navegadores e sistemas operacionais mais utilizados. Em seu artigo, David documentou todos os dados do teste, bem como os seus resultados.
Algumas das conclusões obtidas após a experiência de David são:
- A velocidade de análise (parsing) varia de acordo com a técnica usada. A análise com JavaScript puro é mais rápida para XML do que para o JSON, enquanto a consulta é normalmente mais rápida para o JSON. Ambos apresentando exceções, em que o contrário é verdadeiro;
- O uso da biblioteca JavaScript jQuery impõe uma penalidade exagerada para o JSON, e pior ainda para o XML;
- Documentos compactados em todos os formados, mesmo representações muito grandes em JSON ou XML apresentam tamanho idêntico após a compressão, o que indica que ambos possuem o mesmo conteúdo de informação;
- A transferência de documentos para uma grande variedade de dispositivos leva efetivamente o mesmo tempo em cada dispositivo, independentemente do formato adotado (XML ou JSON).
Baseando-se em seu experimento, David inclui algumas sugestões para arquitetos e desenvolvedores:
- Usar Compressão HTTP, na maioria das vezes, é o fator mais importante no desempenho total;
- Otimizar a marcação para transmissão e consulta;
- Não tentar otimizar, a menos que a transmissão de dados, a análise e a consulta sejam problemas significativos se comparados às outras questões.
E para finalizar, David deixa um conselho:
Não confie em ninguém.
Não acredite cegamente no que dizem. Faça experiências, teste seus próprios dados e codifique com os seus próprios usuários e dispositivos. O que "parece óbvio" nem sempre é verdade.