SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

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

Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAM
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAMBenchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAM
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAMNicola Paoletti
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group MilanoMassimo Groppelli
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]gioacchinolonardo
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
Software Re Engineering
Software Re EngineeringSoftware Re Engineering
Software Re Engineeringpantifabr
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide Sito
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloCodemotion
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory methodMarco Bianchi
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio JavaPaolo Tosato
 
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...guestc4e16b9
 

Ähnlich wie Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Presentazione (20)

Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAM
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAMBenchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAM
Benchmarking - Architettura degli Elaboratori - AA 2010/2011 - UNICAM
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group Milano
 
Eclipse and Java
Eclipse and JavaEclipse and Java
Eclipse and Java
 
Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]
 
Hadoop SAR
Hadoop SARHadoop SAR
Hadoop SAR
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Software Re Engineering
Software Re EngineeringSoftware Re Engineering
Software Re Engineering
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
ORM Java - Hibernate
ORM Java - HibernateORM Java - Hibernate
ORM Java - Hibernate
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non solo
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 
Lezione 04 - Factory method
Lezione 04 - Factory methodLezione 04 - Factory method
Lezione 04 - Factory method
 
Sinossi
SinossiSinossi
Sinossi
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...
Progetto E Realizzazione Di Strumenti E Funzioni Per Facilitare La Trascrizio...
 

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

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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