Intern MakeFileResolver defines and include paths.
This decreases the memory consumption for the defines/include paths
as queried by the CMake JSON import job considerably. And, since
we can now reuse existing Path instances, we don't need the costly
conversion most of the time, leading to a considerable performance
win as well.
Before, my kdevelop session took ca. ~230MB of memory, now this
number is down to ~153MB. Performance wise, I saw the kdevplatform
JSON file speed up from ~2.2s evaluation down to ~1.4s.
This improves startup speed as we can load the defines/includes
plugin much quicker now. Furthermore, we only initialize the
includes/defines for the compiler(s) that are actually used,
not all available ones, thus decreasing memory consumption.
Before:
Successfully loaded plugin "KDevDefinesAndIncludesManager" from
...kdevplatform/21/kdevdefinesandincludesmanager.so" - took: 200 ms
After:
Successfully loaded plugin "KDevDefinesAndIncludesManager" from
...kdevplatform/21/kdevdefinesandincludesmanager.so" - took: 20 ms
REVIEW: 122145
6484c63...
by
l10n daemon script <email address hidden>
SVN_SILENT made messages (.desktop file)
d306b26...
by
Sergey Kalinichev <email address hidden>
Add project to CompilerProvider when includes/defines asked for.
Oterwise, because of projectAboutToBeOpened signal isn't emitted for
some reasons, we could end up in situation when project is not yet added
to the CompilerProvider, but the BackgroundParser already began parsing
the project.
This should hopefully fix the annoying assert for good.