optimize Repository::addCustomSearchPath
There is no need to do a reload, just add items from the new directory.
repository_benchmark -iterations 100 benchmarkRepositoryLoad: 768ms -> 441ms
I note, however, a problem with DefinitionData::get(def)->clear() in reload():
- The definition becomes invalid and can no longer be loaded since
fileNameis empty. The definition keeps a reference to the repo.
This contradicts the comment in the function because Definition can no longer be reloaded: "[...] so we can re-lookup to make references persist over repo reloads" -
reload()throws out the definitions and consequently the Repository destructor cannot setDefinitionData::repoto null.
As a result, we end up with an invalid definition that can no longer be loaded and potentially points to a repo that no longer exists. The only thing the user can do is to discard all these retained definitions and use the new ones. Done I suppose via aboutToReload() / reloaded() or manually.
I think we can delete DefinitionData::clear() and invalidate the definitions in reload by simply setting fileName to empty or/and repo to null.
What do you think?
Edited by jonathan poelen