Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[photran-dev] Photran Indexer Measurements

I spent today speeding up Photran's indexer. It's not particularly fast, but I think it's usable now. At some point in the future, I could get another 10-25% improvement by changing the way we search for references. Here are the measurements for a few of our internal test programs.


The first three represent fairly typical Fortran applications.


Parallel Ocean Program
	77,900 LOC in 68 files
	38.9 seconds indexing (several module loading errors)

IBEAM (Post-Preprocessing)
	62,026 LOC in 220 files
	51.2 seconds indexing

Atmospheric Dispersion Simulation
	52,968 LOC in 29 files
	19.1 seconds indexing (3 fixed form parsing errors)


The last two programs are anomalies of sorts. FMLIB has 36,895 lines in one file while another 10,944-line file uses the same (large) module repeatedly in every subroutine. LAPACK is nearly a million lines of code, but you would generally expect to index it only once.


FMLIB
	56,418 LOC in 5 files
	1:18.7 indexing

LAPACK
	910,973 LOC in 2,811 files
	6:26.5 indexing (many fixed form parsing errors)



Details follow.



=========================================

Measurements performed using org.eclipse.photran.cmdline/VPGStats with -Xmx256M Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)/Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode) on Mac OS X 10.5.7
2 GHz Intel Core 2 Duo, 2 GB 667 MHz DDR2 SDRAM

Lines counted using:
LINES=0; for file in `find . -iname "*.f*"`; do F=`cat $file | wc -l`; LINES=`expr $LINES + $F`; done; echo "Total Lines: $LINES"




Parallel Ocean Program

Name Binding Analysis Statistics:

    Average Times:
        DefinitionCollector: 62 ms
        ImplicitSpecCollector: 1 ms
        ModuleLoader: 136 ms
        PrivateCollector: 0 ms
        SpecificationCollector: 2 ms
        ReferenceCollector: 149 ms

    Maximum Times:
        DefinitionCollector: 252 ms (global_reductions.F90)
        ImplicitSpecCollector: 299 ms (depths_orig.f)
        ModuleLoader: 341 ms (forcing_sfwf.F90)
        PrivateCollector: 27 ms (forcing_ws.F90)
        SpecificationCollector: 61 ms (denscoef.f)
        ReferenceCollector: 553 ms (advection.F90)

Database Cache Statistics:
    Edge Cache Hit Ratio:        49832/60445 (82%)
    Annotation Cache Hit Ratio: 2035677/2067111 (98%)
    Average edge list build time: 0 ms
    Average annotation deserialization time: 0 ms

Module Symbol Table Cache Statistics:
    Hit Ratio:        41/465 (9%)

real	0m38.980s
user	0m47.412s
sys	0m2.542s



IBEAM (Post-Preprocessing)

Name Binding Analysis Statistics:

    Average Times:
        ReferenceCollector: 8 ms
        PrivateCollector: 0 ms
        ImplicitSpecCollector: 0 ms
        ModuleLoader: 3 ms
        DefinitionCollector: 8 ms
        SpecificationCollector: 1 ms

    Maximum Times:
        ReferenceCollector: 719 ms (dBaseAPI-bridges.f90)
        PrivateCollector: 22 ms (amr_prolong_cc.f90)
        ImplicitSpecCollector: 121 ms (visualization.f90)
        ModuleLoader: 1344 ms (dBaseAPI-bridges.f90)
        DefinitionCollector: 661 ms (amr_morton.f90)
        SpecificationCollector: 524 ms (amr_morton.f90)

Database Cache Statistics:
    Edge Cache Hit Ratio:        44833/49259 (91%)
    Annotation Cache Hit Ratio: 2820696/2868636 (98%)
    Average edge list build time: 0 ms
    Average annotation deserialization time: 0 ms

Module Symbol Table Cache Statistics:
    Hit Ratio:        372/587 (63%)

real	0m51.240s
user	0m56.655s
sys	0m2.292s



Atmospheric Dispersion Simulation

Name Binding Analysis Statistics:

    Average Times:
        ReferenceCollector: 161 ms
        DefinitionCollector: 96 ms
        ModuleLoader: 132 ms
        SpecificationCollector: 26 ms
        ImplicitSpecCollector: 8 ms
        PrivateCollector: 0 ms

    Maximum Times:
        ReferenceCollector: 568 ms (libsample.f90)
        DefinitionCollector: 338 ms (libknmicontract.f90)
        ModuleLoader: 314 ms (s_puf_core.f90)
        SpecificationCollector: 140 ms (libxmath.f90)
        ImplicitSpecCollector: 157 ms (libxmath.f90)
        PrivateCollector: 17 ms (libknmicontract.f90)

Database Cache Statistics:
    Edge Cache Hit Ratio:        17825/22917 (78%)
    Annotation Cache Hit Ratio: 867732/881202 (98%)
    Average edge list build time: 0 ms
    Average annotation deserialization time: 0 ms

Module Symbol Table Cache Statistics:
    Hit Ratio:        40/171 (23%)

real	0m19.116s
user	0m24.736s
sys	0m1.463s



FMLIB

Name Binding Analysis Statistics:

    Average Times:
        ModuleLoader: 6723 ms
        ReferenceCollector: 5403 ms
        SpecificationCollector: 275 ms
        DefinitionCollector: 1083 ms
        PrivateCollector: 56 ms
        ImplicitSpecCollector: 170 ms

    Maximum Times:
        ModuleLoader: 19425 ms (FM.f90)
        ReferenceCollector: 17309 ms (FM.f90)
        SpecificationCollector: 1182 ms (FMZM90.f90)
        DefinitionCollector: 3235 ms (FM.f90)
        PrivateCollector: 151 ms (FM.f90)
        ImplicitSpecCollector: 359 ms (FMZM90.f90)

Database Cache Statistics:
    Edge Cache Hit Ratio:        50655/63030 (80%)
    Annotation Cache Hit Ratio: 8561937/8581233 (100%)
    Average edge list build time: 0 ms
    Average annotation deserialization time: 0 ms

Module Symbol Table Cache Statistics:
    Hit Ratio:        1094/1189 (92%)

real	1m18.703s
user	1m30.649s
sys	0m2.203s



LAPACK

Name Binding Analysis Statistics:

    Average Times:
        SpecificationCollector: 0 ms
        ImplicitSpecCollector: 0 ms
        DefinitionCollector: 1 ms
        PrivateCollector: 0 ms
        ModuleLoader: 0 ms
        ReferenceCollector: 3 ms

    Maximum Times:
        SpecificationCollector: 500 ms (cblat2.f)
        ImplicitSpecCollector: 138 ms (zlatmt.f)
        DefinitionCollector: 2558 ms (cblat2.f)
        PrivateCollector: 35 ms (sgesvd.f)
        ModuleLoader: 20 ms (dgesvd.f)
        ReferenceCollector: 3421 ms (cblat3.f)

Database Cache Statistics:
    Edge Cache Hit Ratio:        238344/246708 (97%)
    Annotation Cache Hit Ratio: 7232294/7401608 (98%)
    Average edge list build time: 0 ms
    Average annotation deserialization time: 0 ms

Module Symbol Table Cache Statistics:
    Hit Ratio:        0/0 (0%)

real	6m26.500s
user	6m41.541s
sys	0m6.762s


Back to the top