Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Presentazione

607 views

Published on

Il documento presenta il lavoro di tesi svolto da Michele Damian presso la facoltà di Ingegneria Informatica dell'università di Bologna. Lo scopo della dissertazione è quello di analizzare il comportamento di tuProlog (un interprete per il linguaggio di programmazione logica Prolog) e individuarne i punti critici al fine di migliorarne le prestazioni sia in termini di tempi di esecuzione che di gestione della memoria.

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
607
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Presentazione

  1. 1. Analisi di prestazione dell’interprete tuProlog su piattaforma Java Michele Damian ` ALMA MATER STUDIORUM - UNIVERSITA DI BOLOGNA ` di Ingegneria Facolta Corso di Laurea Triennale in Ingegneria Informatica Relatore: Chiar.mo Prof. Enrico Denti Anno Accademico 2007/2008 19 marzo 2009 Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  2. 2. Obiettivi Obiettivi Porre delle basi utili per il miglioramento delle prestazioni di tuProlog. Attraverso l’analisi dei tempi di esecuzione. . . e attraverso l’analisi dell’utilizzo della memoria. Confrontare le performance delle versioni 2.1 e 1.3 dell’interprete. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  3. 3. Obiettivi Obiettivi Porre delle basi utili per il miglioramento delle prestazioni di tuProlog. Attraverso l’analisi dei tempi di esecuzione. . . e attraverso l’analisi dell’utilizzo della memoria. Confrontare le performance delle versioni 2.1 e 1.3 dell’interprete. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  4. 4. Obiettivi Obiettivi Porre delle basi utili per il miglioramento delle prestazioni di tuProlog. Attraverso l’analisi dei tempi di esecuzione. . . e attraverso l’analisi dell’utilizzo della memoria. Confrontare le performance delle versioni 2.1 e 1.3 dell’interprete. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  5. 5. Obiettivi Obiettivi Porre delle basi utili per il miglioramento delle prestazioni di tuProlog. Attraverso l’analisi dei tempi di esecuzione. . . e attraverso l’analisi dell’utilizzo della memoria. Confrontare le performance delle versioni 2.1 e 1.3 dell’interprete. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  6. 6. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  7. 7. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  8. 8. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  9. 9. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  10. 10. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  11. 11. L’interprete tuProlog L’interprete tuProlog Interprete per il linguaggio di programmazione logica Prolog, ideato per creare componenti in un’infrastruttura internet dinamica. Caratteristiche principali Scritto interamente in Java. Interoperabile con le librerie Java. Portabile. Leggero. Configurabile. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  12. 12. Profiling di tuProlog Benchmark Teorie di test Parte del benchmark ` composto da teorie utilizzate precedentemente e per confrontare le prestazioni di tuProlog con altri interpreti Prolog. Al fine di rispecchiare maggiormente l’utilizzo di tuProlog su sistemi di calcolo moderni il benchmark ` stato completato con nuove teorie e che aumentano il carico di lavoro. Altre teorie sono state scritte per analizzare in modo adeguato la scalabilit` delle prestazioni del motore confrontando il numero di stati a dell’albero di ricerca della soluzione con i tempi di esecuzione. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  13. 13. Profiling di tuProlog Benchmark Teorie di test Parte del benchmark ` composto da teorie utilizzate precedentemente e per confrontare le prestazioni di tuProlog con altri interpreti Prolog. Al fine di rispecchiare maggiormente l’utilizzo di tuProlog su sistemi di calcolo moderni il benchmark ` stato completato con nuove teorie e che aumentano il carico di lavoro. Altre teorie sono state scritte per analizzare in modo adeguato la scalabilit` delle prestazioni del motore confrontando il numero di stati a dell’albero di ricerca della soluzione con i tempi di esecuzione. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  14. 14. Profiling di tuProlog Benchmark Teorie di test Parte del benchmark ` composto da teorie utilizzate precedentemente e per confrontare le prestazioni di tuProlog con altri interpreti Prolog. Al fine di rispecchiare maggiormente l’utilizzo di tuProlog su sistemi di calcolo moderni il benchmark ` stato completato con nuove teorie e che aumentano il carico di lavoro. Altre teorie sono state scritte per analizzare in modo adeguato la scalabilit` delle prestazioni del motore confrontando il numero di stati a dell’albero di ricerca della soluzione con i tempi di esecuzione. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  15. 15. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  16. 16. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  17. 17. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  18. 18. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  19. 19. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  20. 20. Profiling di tuProlog Benchmark Il profiler HPROF ` E uno strumento per il profiling di applicazioni Java in grado di iniettare bytecode nel codice da eseguire. Pregi Essendo distribuito liberamente nel JDK ` facilmente accessibile per e future estensioni del lavoro. Consente l’analisi dei tempi di esecuzione e dell’utilizzo della memoria. Permette un’analisi classe per classe e metodo per metodo. Mostra il trace dello stack che ha generato la chiamata ad un metodo o una allocazione. Difetti Misura in modo errato il numero di oggetti live allocati, mostrando gli oggetti non ancora garbage collected. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  21. 21. Profiling di tuProlog Analisi dei tempi di esecuzione Scalabilit` a Sono stati analizzati i tempi di esecuzione per risoluzioni di obiettivi 3 + 6! stati 248 s sempre pi` complessi. u Struct.unify 1947041 Var.unify 2584249 La funzione (tempo di Var.free 1802505 esecuzione)/(numero di stati) ` lineare e 3 + 2 ∗ 6! stati 489 s per obiettivi semplici. Struct.unify 3876572 Ma per obiettivi pi` complessi le u Var.unify 5181011 prestazioni degradano. Var.free 3601750 Anche il numero delle chiamate ai 3 + 3 ∗ 6! stati 1898 s metodi ` proporzionale al numero e Object.wait 2 degli stati. ReferenceQueue.remove 4 Struct.unify 5813154 I metodi Object.wait e Var.unify 7768221 ReferenceQueue.remove chiamati dal Var.free 5398379 Garbage Collector sono fra le cause principali del degrado. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  22. 22. Profiling di tuProlog Analisi dei tempi di esecuzione Scalabilit` a Sono stati analizzati i tempi di esecuzione per risoluzioni di obiettivi 3 + 6! stati 248 s sempre pi` complessi. u Struct.unify 1947041 Var.unify 2584249 La funzione (tempo di Var.free 1802505 esecuzione)/(numero di stati) ` lineare e 3 + 2 ∗ 6! stati 489 s per obiettivi semplici. Struct.unify 3876572 Ma per obiettivi pi` complessi le u Var.unify 5181011 prestazioni degradano. Var.free 3601750 Anche il numero delle chiamate ai 3 + 3 ∗ 6! stati 1898 s metodi ` proporzionale al numero e Object.wait 2 degli stati. ReferenceQueue.remove 4 Struct.unify 5813154 I metodi Object.wait e Var.unify 7768221 ReferenceQueue.remove chiamati dal Var.free 5398379 Garbage Collector sono fra le cause principali del degrado. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  23. 23. Profiling di tuProlog Analisi dei tempi di esecuzione Scalabilit` a Sono stati analizzati i tempi di esecuzione per risoluzioni di obiettivi 3 + 6! stati 248 s sempre pi` complessi. u Struct.unify 1947041 Var.unify 2584249 La funzione (tempo di Var.free 1802505 esecuzione)/(numero di stati) ` lineare e 3 + 2 ∗ 6! stati 489 s per obiettivi semplici. Struct.unify 3876572 Ma per obiettivi pi` complessi le u Var.unify 5181011 prestazioni degradano. Var.free 3601750 Anche il numero delle chiamate ai 3 + 3 ∗ 6! stati 1898 s metodi ` proporzionale al numero e Object.wait 2 degli stati. ReferenceQueue.remove 4 Struct.unify 5813154 I metodi Object.wait e Var.unify 7768221 ReferenceQueue.remove chiamati dal Var.free 5398379 Garbage Collector sono fra le cause principali del degrado. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  24. 24. Profiling di tuProlog Analisi dei tempi di esecuzione Scalabilit` a Sono stati analizzati i tempi di esecuzione per risoluzioni di obiettivi 3 + 6! stati 248 s sempre pi` complessi. u Struct.unify 1947041 Var.unify 2584249 La funzione (tempo di Var.free 1802505 esecuzione)/(numero di stati) ` lineare e 3 + 2 ∗ 6! stati 489 s per obiettivi semplici. Struct.unify 3876572 Ma per obiettivi pi` complessi le u Var.unify 5181011 prestazioni degradano. Var.free 3601750 Anche il numero delle chiamate ai 3 + 3 ∗ 6! stati 1898 s metodi ` proporzionale al numero e Object.wait 2 degli stati. ReferenceQueue.remove 4 Struct.unify 5813154 I metodi Object.wait e Var.unify 7768221 ReferenceQueue.remove chiamati dal Var.free 5398379 Garbage Collector sono fra le cause principali del degrado. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  25. 25. Profiling di tuProlog Analisi dei tempi di esecuzione Scalabilit` a Sono stati analizzati i tempi di esecuzione per risoluzioni di obiettivi 3 + 6! stati 248 s sempre pi` complessi. u Struct.unify 1947041 Var.unify 2584249 La funzione (tempo di Var.free 1802505 esecuzione)/(numero di stati) ` lineare e 3 + 2 ∗ 6! stati 489 s per obiettivi semplici. Struct.unify 3876572 Ma per obiettivi pi` complessi le u Var.unify 5181011 prestazioni degradano. Var.free 3601750 Anche il numero delle chiamate ai 3 + 3 ∗ 6! stati 1898 s metodi ` proporzionale al numero e Object.wait 2 degli stati. ReferenceQueue.remove 4 Struct.unify 5813154 I metodi Object.wait e Var.unify 7768221 ReferenceQueue.remove chiamati dal Var.free 5398379 Garbage Collector sono fra le cause principali del degrado. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  26. 26. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 1 Struct.getTerm 3,06 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 5 Struct.unify 2,25 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  27. 27. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 0 1 Struct.getTerm 3,06 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 5 Struct.unify 2,25 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  28. 28. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 0 1 Struct.getTerm 3,06 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 5 Struct.unify 2,25 1 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  29. 29. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi Int.unify 2 N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 0 1 Struct.getTerm 3,06 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 5 Struct.unify 2,25 1 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  30. 30. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi Int.unify 2 3 Term.match N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 0 1 Struct.getTerm 3,06 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 5 Struct.unify 2,25 1 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  31. 31. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi Int.unify 2 3 Term.match N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 0 1 Struct.getTerm 3,06 Var.rename 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 Struct.toString Struct.<init> 5 Struct.unify 2,25 1 4 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  32. 32. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi Int.unify 2 3 Term.match N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 Term.match 5 0 1 Struct.getTerm 3,06 Var.rename 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 Struct.toString Struct.<init> 5 Struct.unify 2,25 1 4 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  33. 33. Profiling di tuProlog Analisi dei tempi di esecuzione Analisi dei metodi Int.unify 2 3 Term.match N. Nome metodo Esec % - Object.wait 12,15 0 Var.occurCheck 3,70 Term.match 5 0 1 Struct.getTerm 3,06 Var.rename 2 Var.unify 3,05 3 2,82 AbstractStringBuilder.append 4 Var.free 2,61 Struct.toString Struct.<init> 5 Struct.unify 2,25 1 4 Il metodo Object.wait ` mediamente quello che occupa la maggior parte del tempo e di esecuzione delle teorie. Le classi Var e Struct sono complessivamente le pi` utilizzate. u L’implementazione della struttura Term, Var e Struct deve essere rivista. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  34. 34. Profiling di tuProlog Analisi dell’utilizzo della memoria Analisi degli oggetti allocati Nove classi istanziano il 75% della memoria totale allocata. Nome oggetto M. allocata % Le classi ArrayList e AbstractList$Itr Object[] 27,40 vengono utilizzate in maggior modo char[] 14,71 dallo stesso metodo. ArrayList 7,90 ArrayList istanzia uno o pi` oggetti u AbstractList$Itr 6,95 Object[] nel suo tempo di vita. Struct 5,37 String 4,15 Lo stesso vale per String e Term[] 3,82 StringBuffer che istanziano oggetti Var 3,50 char[]. StringBuffer 1,82 Le classi Struct e Var sono specializzazioni di Term e la stessa Struct contiene array di Term. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  35. 35. Profiling di tuProlog Analisi dell’utilizzo della memoria Analisi degli oggetti allocati Nove classi istanziano il 75% della memoria totale allocata. Nome oggetto M. allocata % Le classi ArrayList e AbstractList$Itr Object[] 27,40 vengono utilizzate in maggior modo char[] 14,71 dallo stesso metodo. ArrayList 7,90 ArrayList istanzia uno o pi` oggetti u AbstractList$Itr 6,95 Object[] nel suo tempo di vita. Struct 5,37 String 4,15 Lo stesso vale per String e Term[] 3,82 StringBuffer che istanziano oggetti Var 3,50 char[]. StringBuffer 1,82 Le classi Struct e Var sono specializzazioni di Term e la stessa Struct contiene array di Term. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  36. 36. Profiling di tuProlog Analisi dell’utilizzo della memoria Analisi degli oggetti allocati Nove classi istanziano il 75% della memoria totale allocata. Nome oggetto M. allocata % Le classi ArrayList e AbstractList$Itr Object[] 27,40 vengono utilizzate in maggior modo char[] 14,71 dallo stesso metodo. ArrayList 7,90 ArrayList istanzia uno o pi` oggetti u AbstractList$Itr 6,95 Object[] nel suo tempo di vita. Struct 5,37 String 4,15 Lo stesso vale per String e Term[] 3,82 StringBuffer che istanziano oggetti Var 3,50 char[]. StringBuffer 1,82 Le classi Struct e Var sono specializzazioni di Term e la stessa Struct contiene array di Term. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  37. 37. Profiling di tuProlog Analisi dell’utilizzo della memoria Analisi degli oggetti allocati Nove classi istanziano il 75% della memoria totale allocata. Nome oggetto M. allocata % Le classi ArrayList e AbstractList$Itr Object[] 27,40 vengono utilizzate in maggior modo char[] 14,71 dallo stesso metodo. ArrayList 7,90 ArrayList istanzia uno o pi` oggetti u AbstractList$Itr 6,95 Object[] nel suo tempo di vita. Struct 5,37 String 4,15 Lo stesso vale per String e Term[] 3,82 StringBuffer che istanziano oggetti Var 3,50 char[]. StringBuffer 1,82 Le classi Struct e Var sono specializzazioni di Term e la stessa Struct contiene array di Term. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  38. 38. Profiling di tuProlog Analisi dell’utilizzo della memoria Analisi degli oggetti allocati Nove classi istanziano il 75% della memoria totale allocata. Nome oggetto M. allocata % Le classi ArrayList e AbstractList$Itr Object[] 27,40 vengono utilizzate in maggior modo char[] 14,71 dallo stesso metodo. ArrayList 7,90 ArrayList istanzia uno o pi` oggetti u AbstractList$Itr 6,95 Object[] nel suo tempo di vita. Struct 5,37 String 4,15 Lo stesso vale per String e Term[] 3,82 StringBuffer che istanziano oggetti Var 3,50 char[]. StringBuffer 1,82 Le classi Struct e Var sono specializzazioni di Term e la stessa Struct contiene array di Term. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  39. 39. Profiling di tuProlog Analisi dell’utilizzo della memoria Cause delle allocazioni ClauseStore.deunify N. Nome oggetto 2 0 Object[] 1 char[] Var.free 2 ArrayList 3 AbstractList$Itr Term.match Term.match 4 Struct 5 String 6 Term[] ClauseStore.deunify 7 Var 0 3 8 StringBuffer ClauseStore.deunify I metodi ClauseStore.deunify e Term.match causano la maggior parte dell’allocazione della memoria. Escludendo poche eccezioni Var.rename ` l’unico metodo ad allocare oggetti e String, StringBuilder e char[] che vale il 20% della memoria totale allocata. Come per i tempi di esecuzione la struttura Term - Struct - Var dovrebbe essere resa pi` leggera. u Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  40. 40. Profiling di tuProlog Analisi dell’utilizzo della memoria Cause delle allocazioni Var.rename N. Nome oggetto 1 0 Object[] 1 char[] 2 ArrayList 3 AbstractList$Itr 4 Struct 5 String 6 Term[] 7 Var Var.rename 5 8 8 StringBuffer Var.rename I metodi ClauseStore.deunify e Term.match causano la maggior parte dell’allocazione della memoria. Escludendo poche eccezioni Var.rename ` l’unico metodo ad allocare oggetti e String, StringBuilder e char[] che vale il 20% della memoria totale allocata. Come per i tempi di esecuzione la struttura Term - Struct - Var dovrebbe essere resa pi` leggera. u Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  41. 41. Profiling di tuProlog Analisi dell’utilizzo della memoria Cause delle allocazioni N. Nome oggetto 4 0 Object[] 1 char[] 2 ArrayList 3 AbstractList$Itr 4 Struct 5 String 6 Term[] 7 Var 7 6 8 StringBuffer I metodi ClauseStore.deunify e Term.match causano la maggior parte dell’allocazione della memoria. Escludendo poche eccezioni Var.rename ` l’unico metodo ad allocare oggetti e String, StringBuilder e char[] che vale il 20% della memoria totale allocata. Come per i tempi di esecuzione la struttura Term - Struct - Var dovrebbe essere resa pi` leggera. u Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  42. 42. Profiling di tuProlog Confronto con la versione 1.3 Confronto con la versione 1.3 Sono stati messi a confronto i tempi di escuzione e l’utilizzo della memoria delle versioni 2.1 e 1.3 di tuProlog. Nelle teorie sottoposte a test la nuova versione ` risultata pi` lenta e u della vecchia, con un aumento dei tempi medio del 20%. Anche per quanto concerne la memoria allocata si ` visto un aumento e medio del 20% nella versione 2.1 rispetto alla 1.3. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  43. 43. Profiling di tuProlog Confronto con la versione 1.3 Confronto con la versione 1.3 Sono stati messi a confronto i tempi di escuzione e l’utilizzo della memoria delle versioni 2.1 e 1.3 di tuProlog. Nelle teorie sottoposte a test la nuova versione ` risultata pi` lenta e u della vecchia, con un aumento dei tempi medio del 20%. Anche per quanto concerne la memoria allocata si ` visto un aumento e medio del 20% nella versione 2.1 rispetto alla 1.3. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  44. 44. Profiling di tuProlog Confronto con la versione 1.3 Confronto con la versione 1.3 Sono stati messi a confronto i tempi di escuzione e l’utilizzo della memoria delle versioni 2.1 e 1.3 di tuProlog. Nelle teorie sottoposte a test la nuova versione ` risultata pi` lenta e u della vecchia, con un aumento dei tempi medio del 20%. Anche per quanto concerne la memoria allocata si ` visto un aumento e medio del 20% nella versione 2.1 rispetto alla 1.3. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  45. 45. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  46. 46. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  47. 47. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  48. 48. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  49. 49. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java
  50. 50. Conclusioni Conclusioni Il garbage collector causa un degrado consistente dei tempi di esecuzione. Un miglioramento dell’efficienza in termini di allocazione di memoria causa indirettamente un miglioramento dei tempi di esecuzione. Term e le sue specializzazioni Struct e Var vanno reimplementate. In particolare il metodo Term.match causa sia un aumento considerevole dei tempi di esecuzione sia della memoria utilizzata. Suggerimenti Aumentare la capacit` iniziale della struttura dati ArrayList in modo a da limitare il numero di Object[] che essa alloca. Sostituire la classe String in Var.rename con StringBuilder, pi` veloce u e meno avida di memoria nelle operazioni di append. Michele Damian Analisi di prestazione dell’interprete tuProlog su piattaforma Java

×