Pergunta

Eu estou começando a desenvolver uma aplicação web em PHP que eu espero que irá tornar-se incrivelmente populares e fazer-me famoso e rico. : -)

Se chegar esse momento, a minha decisão de analisar os dados do API como XML com SimpleXML ou para uso json_decode poderia fazer uma diferença em termos de escalabilidade do aplicativo.

Alguém sabe qual dessas abordagens é mais eficiente para o servidor?

Update: Eu corri um teste rudimentar para ver qual método foi maior performance. Parece que json_decode é ligeiramente mais rápido do que executar simplexml_load_string. Isso não é muito conclusiva porque não testar coisas como a escalabilidade de processos concorrentes. Minha conclusão é que eu vou com SimpleXML para o momento por causa de seu suporte para expressões 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>

Resultado:

XML elapsed: 9.9836
JSON elapsed: 8.3606
Foi útil?

Solução

Como o formato mais "leve", eu esperaria JSON a ser um pouco menos estressante no servidor, mas eu duvido que ele vai ser o maior problema de desempenho que você encontrar-se lidar com como o seu site cresce em popularidade. Use qualquer formato que você está mais confortável com.

Como alternativa, se você sabe como você vai ser estruturação seus dados, você pode tentar fazer uma versão de formato XML e uma versão JSON-formatado e basta executá-lo contra a sua configuração de algumas centenas de milhares de vezes para ver se ele faz a diferença notável.

Outras dicas

Há apenas uma maneira de determinar qual vai ser mais fácil em seu servidor em seu aplicativo com seus dados.

Test-lo!

Eu gerar alguns dados que se parece com o que você vai traduzir e usar um dos testes unitários estruturas para decodificá-lo alguns milhares de vezes utilizando cada um dos SimpleXML e json_decode, o suficiente para obter resultados significativos. E então você pode nos dizer o que funcionou.

Infelizmente este não é exatamente o tipo de resposta que você estava procurando, mas, na realidade, é a única maneira certa de fazer isso. Boa sorte!

Não é realmente uma resposta para a pergunta, mas você pode simplesmente esperar até que você tem muitos usuários que batem seu sistema. Você pode ser surpreendido onde seus gargalos realmente mentir:

http://gettingreal.37signals.com/ch04_Scale_Later.php

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top