• Enrico Denti
    Enrico Denti, 17/03/2010 17:30

    Obiettivo:
    - confronto fra tuProlog 1.3 e 2.1: tempi di esecuzione, uso della memoria

    Come/cosa ha fatto:
    - suite di benchmark: teorie già usate in precedenza per confrontare 2P con altri interpreti nonché nuove teorie che causano maggior carico di lavoro ùiù altre teorie specifiche per controllo scalabilità (numero di stati dell?albero di ricerca vs tempi di esecuzione)
    - strumento HPROF: comodo, abbastanza completo, col limite però di contare in modo errato gli oggetti allocati perché include anche quelli non ancora garbage-collected
    - analisi dei principali metodi e degli oggetti allocati: identificazione dei metodi più critici (es. per memoria ClauseStore.deunify e e Term.match)

    Risultati:
    - la versione 2.1 è risultata più lenta della vecchia 1.3: tempi di esecuzione +20%, memoria allocata +20%
    - cause: garbage collector in primis, occorrerebbe migliorare allocazione di memoria (si è visto che ciò migliorerebbe i tempi)
    - vanno rifatte le classi Term, Struct e Var ? in particolare Term.match è critico
    - va aumentata la capacità iniziale di AwwayList per limitare il numero di Object[] da essa allocati
    - in Var.rename, sarebbe opportuno sostituire String con StringBuilder, che è più veloce e meno avida di memoria durante le append

2008 © aliCE Research Group @ DEIS, Alma Mater Studiorum-Università di Bologna
0.2