CodeCompass currently builds database indexes for projects at the end of parsing. Previously this was fine, since little to no SELECT queries were executed during parsing, therefore it is unnecessary to maintain the indexes. However, the C++ metrics computation executes many SELECT queries on the C++ parsing result. The lack of these database indexes can greatly impair the performance.
Parsing Xerces I got the following measurement results:
If the database indexes are created at the beginning of parsing, the duration of C++ parsing is increased by 6%.
However, the type-level McCabe calculation time reduced from 9 minutes to 112 seconds (480% speedup).
Also, the Lack of Cohesion (type level again) reduced from 6 minutes to 5 seconds (7200% acceleration!).
Therefore this PR introduces an enhancement to optionally run Plugin parsers after DB indexing.
CodeCompass currently builds database indexes for projects at the end of parsing. Previously this was fine, since little to no SELECT queries were executed during parsing, therefore it is unnecessary to maintain the indexes. However, the C++ metrics computation executes many SELECT queries on the C++ parsing result. The lack of these database indexes can greatly impair the performance.
Parsing Xerces I got the following measurement results:
Therefore this PR introduces an enhancement to optionally run Plugin parsers after DB indexing.