Odio dirti questo, ma non c'è una risposta semplice alla tua domanda.
Le prestazioni di un formato di serializzazione dipendono da molti fattori. Prima di tutto, le prestazioni sono una proprietà dell'implementazione più del formato stesso. Quello che vuoi veramente sapere è quanto bene eseguono le specifiche implementazioni JRuby di ogni formato (o forse le implementazioni Java, se le stai semplicemente avvolgendo). La risposta potrebbe essere molto diversa dalla risposta in altre lingue, come il C++.
Inoltre, le prestazioni variano a seconda di come si utilizza la libreria. Le API di molte librerie offrono un compromesso tra il modo "facile, lento" e il modo "veloce, difficile". Durante l'ottimizzazione, dovrai studiare attentamente la documentazione e cercare codice di esempio dagli autori delle biblioteche per sapere come spremere le massime prestazioni.
Infine, e soprattutto, le prestazioni sono molto diverse a seconda dei dati con cui si sta lavorando. Diversi formati e implementazioni ottimizzano per diversi tipi di dati. Ad esempio, i dati pesanti sulle stringhe eserciteranno percorsi di codice molto diversi da quelli con numeri elevati. Per ogni formato, anche JSON e XML *, è sempre possibile trovare un caso d'uso in cui si comporta meglio di tutti gli altri. Diffida dei benchmark che provengono dagli autori delle biblioteche, poiché questi tenderanno a enfatizzare i casi di utilizzo a loro favore.
Sfortunatamente, se si vuole veramente sapere quale formato si esibirà meglio per voi, l'unico modo che scoprirete è scrivendo due versioni del vostro codice, una per ciascuna libreria e confrontandole. Nessun benchmark esterno sarà in grado di darti la vera risposta.
(Io sono l'autore di Protobuf v2 e Cap'n Proto, così ho passato un sacco di tempo a guardare benchmark di serializzazione e pensare a prestazioni.)
* Sto scherzando su XML.
fonte
2016-07-04 20:58:47
Non una buona domanda per stackoverflow ma controlla questo post: http://www.sammur.com/?p=36 – Nicholas
grazie mille Nicholas :) –