Efetuando Login Efeito JSON no Desempenho


22

Eu vejo mais e mais artigos sobre o logon no JSON. Você também pode encontrar um no blog do NodeJS. Por que todo mundo gosta tanto? Só consigo ver mais operações se envolvendo:

  • Alguns novos objetos sendo criados.
  • Objetos de stringing, que envolvem o cálculo do comprimento da string ou várias alocações de string.
  • GCing toda a porcaria que foi criada.

Existe algum teste de desempenho ao usar o log JSON e o log regular de cadeias? As pessoas usam JSON (para log) em projetos corporativos?

Respostas:


36

O log JSON permite analisar o arquivo de log programaticamente, mesmo que o formato tenha sido alterado com o tempo .

Um bom exemplo são os logs do Apache. Por padrão, o Apache usa o commonformato para access.log:

"%h %l %u %t \"%r\" %>s %b"

Digamos que você criou um analisador offline que pega um desses arquivos de log e calcula algumas estatísticas a partir dele.

Em algum momento, você apresenta subdomínios ao seu aplicativo e os inclui virtual_hostnos logs (apenas para depurar se houver problemas com um dos subdomínios):

"%v %h %l %u %t \"%r\" %>s %b"

Seu analisador não faz uso do virtual_hosts, mas você ainda precisa adaptá-lo a:

  • aceite o novo formato de log (observe %vno início do formato de log)
  • ainda suporta o formato de log antigo (para arquivos de log antigos)

Mas se você efetuar login no JSON , seu analisador nem perceberá o campo adicionado e poderá analisar com satisfação os novos logs e os logs antigos. E algum outro analisador pode fazer uso dos campos adicionados, se existirem .

E, é claro, para você , analisar o JSON é mais fácil do que escrever regexpspara analisar os logs de sequência.


10
Exemplo perfeito.
Florian Margaine 19/10/12

27

Se sua máquina estiver tão perto de seus limites que esses problemas realmente importariam, você provavelmente terá problemas mais sérios. Embora possa haver situações excepcionais em que isso faça alguma diferença, muitos aplicativos (talvez a maioria) são executados em máquinas para as quais a diferença se você registrar JSON, texto simples ou registros em um banco de dados não importa. Objetos, seqüências de caracteres e outras conversões precisam ser feitos na maioria dos casos (a menos que você faça logon binário bruto?), Talvez você não o veja, porque você usa classes padrão que tratam disso em segundo plano (como se você escreve em um banco de dados).

Se você precisar de avaliações de desempenho para isso, precisará fazê-las na máquina em que deseja executar seu código e no ambiente de programação usado diariamente. Se houver uma grande sobrecarga ou alguma depende de muitas coisas. Se você escreve um site no Ruby on Rails, por exemplo, na maioria dos casos, seus dados são um hash, convertendo isso para JSON não custa quase nada, pois a representação interna não está muito longe do que você deseja escrever (e é típico para o código Rails contornar esses objetos e estruturas de dados o tempo todo).

As vantagens dependem novamente de suas ferramentas. Se você tiver o JSON criado em suas bibliotecas, poderá lê-lo facilmente e exibi-lo de alguma forma. Novamente como um exemplo: supondo que você tenha uma interface administrativa para o seu site e deseje mostrar algumas informações de log armazenadas no JSON, você pode fazer isso ler e exibir como HTML no Ruby em uma única linha de código em alguns casos.


1
Eu aposto que você não se importam muito sobre jogando fora microssegundos ...
Rhymoid

@ Rhymoid não, eu prefiro usar meu tempo para resolver problemas reais.
Thorsten Müller

3
@Rhymoid Há situações em que jogar fora microssegundos é ruim, com certeza. Eu também acho que 99,9% dos programadores vão escrever código onde não. Por exemplo, a maioria das estruturas da Web faz mais do que eu preciso, e isso tem sobrecarga. Mas, com ele, vem um conjunto completo de testes e segurança, além de me poupar centenas de horas codificando-o. Pelo custo extra que minha empresa não gasta construindo do zero, eles poderiam financiar o dobro do hardware, se precisassem (embora provavelmente também seja mais rápido do que qualquer coisa que eu pudesse me construir de qualquer maneira ...) Por fim, microssegundos não importam.
corsiKa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.