Accesso all'effetto JSON sulle prestazioni

22

Vedo sempre più articoli sull'accesso a JSON. Puoi anche trovarne uno sul blog NodeJS. Perché a tutti piace così tanto? Posso vedere solo più operazioni coinvolte:

  • Un paio di nuovi oggetti creati.
  • Stringa di oggetti, che implica il calcolo della lunghezza della stringa o di più assegnazioni di stringhe.
  • GCing tutta la merda che è stata creata.

Esiste un test sulle prestazioni quando si utilizza la registrazione JSON e la registrazione regolare delle stringhe? Le persone usano JSON (per la registrazione) nei progetti aziendali?

    
posta Pijusn 19.10.2012 - 09:18
fonte

2 risposte

36

La registrazione JSON ti dà la possibilità di analizzare il file di registro a livello di codice anche se il formato è cambiato nel tempo .

Un buon esempio sono i log di Apache. Di default Apache usa il formato common per access.log:

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

Supponiamo di aver creato un parser offline che prende uno di questi file di registro e ne calcola alcune statistiche.

In alcuni momenti introduci sottodomini nella tua applicazione e includi virtual_host nei tuoi registri (solo così puoi eseguire il debug se i problemi si presentano con uno dei sottodomini):

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

Il tuo parser non utilizza virtual_hosts , ma devi ancora adattare il parser a:

  • accetta il nuovo formato di registro (nota %v all'inizio del formato di registro)
  • supporta ancora il vecchio formato di registro (per i file di registro meno recenti)

Ma se accedi JSON , il tuo parser non noterà nemmeno il campo aggiunto e può analizzare felicemente i nuovi log e i vecchi log. E qualche altro parser può usare i campi aggiunti se esistono .

E naturalmente per te , l'analisi di JSON è più facile che scrivere regexps per analizzare i log delle stringhe.

    
risposta data 19.10.2012 - 09:49
fonte
28

Se la tua macchina è così vicina ai suoi limiti che tali questioni sarebbero davvero importanti, molto probabilmente avrai problemi più seri. Mentre ci possono essere situazioni eccezionali in cui questo fa la differenza, molte applicazioni (forse la maggior parte) vengono eseguite su macchine per le quali la differenza se si registra JSON, testo semplice o record in un database non ha alcuna importanza. Oggetti, stringhe e altre conversioni devono essere eseguiti nella maggior parte dei casi (a meno che non si registri il binario raw?), Forse non lo si vedrà, perché si usano classi predefinite che lo gestiscono in background (come se si scrivesse su un database).

Se hai bisogno di valutazioni delle prestazioni per questo, dovresti farle tu stesso sulla macchina che vuoi far girare il tuo codice e con l'ambiente di programmazione che usi ogni giorno. Se c'è un sovraccarico o del tutto dipende da molte cose. Ad esempio, se scrivi un sito web in Ruby on Rails, i tuoi dati nella maggior parte dei casi sono un hash, convertirli in JSON ti costa quasi nulla, poiché la rappresentazione interna non è così lontana da ciò che vuoi scrivere (ed è tipico per il codice Rails per gettare continuamente oggetti e strutture dati).

I vantaggi dipendono ancora dai tuoi strumenti. Se hai JSON integrato nelle tue librerie, puoi leggerlo facilmente e visualizzarlo in qualche modo. Ancora a titolo di esempio: supponendo che tu disponga di un'interfaccia di amministrazione per il tuo sito web e desideri mostrare alcune informazioni di registrazione memorizzate in JSON, potresti farlo leggere e visualizzarlo come HTML in Ruby in una singola riga di codice in alcuni casi.

    
risposta data 19.10.2012 - 09:33
fonte

Leggi altre domande sui tag