[
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