User: Carmar (Carlo Maresca)



Titolo Tesi: Tecniche innovative di serializzazione in Java

Abstract

Il processo di serializzazione in Java ha problemi ben noti: risulta essere inefficiente sia in termini computazionali che per le dimensioni dell’oggetto serializzato, tuttavia è un processo completamente automatico e non richiede pertanto alcuno sforzo da parte dello sviluppatore. Per questo motivo il lavoro si è concentrato principalmente sulle tecniche di serializzazione e sui processi che rendono automatico ed efficiente tale processo. Un progetto interessante sviluppato dalla Google Inc. consente di migliorare notevolmente questi processi utilizzando tecniche di serializzazione che mediante le informazioni sul tipo del campo, consentono una riduzione dello spazio occupato e dei tempi di esecuzione del processo rispetto a quello utilizzato da Java. Pertanto, l’idea alla base del progetto è di realizzare tecniche che si avvalgono oltre che dell’informazione sul tipo del campo, anche di informazioni sul relativo dominio in modo da ottenere una riduzione sul numero di byte utilizzati senza gravare in modo significativo sulle performance. Le tecniche realizzate sono state integrate nel progetto creato da Google Inc. in modo che sia possibile scegliere le nuove tecniche o la versione originaria del progetto. Dai risultati ottenuti è emerso che l’utilizzo delle tecniche che fanno uso delle informazioni aggiuntive, diminuiscono lo spazio occupato aumentando i tempi di scrittura e lettura delle informazioni rispetto al progetto creato da Google Inc., tuttavia il tempo di esecuzione è estremamente inferiore rispetto ai tempi della serializzazione di Java. In particolare, esempi pratici hanno dimostrato che l’utilizzo della tecnica aumenta l’utilizzo di processore di mezzo punto percentuale ottenendo un risparmio in termini di spazio del 6% in più rispetto alla versione che non fa uso della tecnica realizzata, in altri casi, l’utilizzo della tecnica aumenta l’utilizzo di processore del 9% ottenendo un risparmio in termini di spazio del 20%. I risultati dipendono fortemente dagli oggetti che si desidera serializzare, esempi meno fortunati hanno mostrato che l’utilizzo della tecnica aumenta l’utilizzo di processore dell’8% ottenendo un risparmio in termini di spazio occupato del 7%.