DevBoost / JaMoPP

JaMoPP can parse Java source and byte code into EMF-based models and vice versa. It preserves source formatting and can be used for code analysis and refactoring.
17 stars 18 forks source link

Performance optimization for JavaGrammarInformationProvider #12

Closed BenjaminKlatt closed 3 years ago

BenjaminKlatt commented 10 years ago

This pull request fixes #11 by switching the JavaGrammarInformationProvider to a not-generated class and using caches for syntax element handling

BenjaminKlatt commented 10 years ago

The pull request has been extended with code changes to Fix #13

BenjaminKlatt commented 10 years ago

Up to now, the enhancements included in this pull request led to an improvement in memory consumption. A performance improvement, in terms of time reduction is still pending.

The screenshots below represent the results of a test to load all jar and java files from a use case feature only variant of the ArgoUML-SPL open source project: http://sdqweb.ipd.kit.edu/wiki/SPLevo/Case_Studies/ArgoUML-SPL

Original JaMoPP Code jamopp_argouml-usecase-variant_origin

Modification up-to-now jamopp_argouml-usecase-variant_20140104

As you can see, the memory consumption is reduced at the end of the process.

Note: This performance analysis has not been performed in a lab, but on a laptop workstation.

BenjaminKlatt commented 10 years ago

Further performance improvements. Reproduced test described above and achieved about 3 minutes (10%) improvement with further memory reduction

jamopp_argouml-usecase-variant_20140105

BenjaminKlatt commented 10 years ago

I have tested LinkedHashMap-based caches for the JavaUniquePathConstructor methods, but without any significant differences. So I do not push these changes into the branch.