<div><div class="gmail_quote">On Fri, Feb 18, 2011 at 10:21 AM, David Nolden <span dir="ltr"><<a href="mailto:zwabel@googlemail.com">zwabel@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

For full-project parsing, we collect a reduced amount of information,<br>
where basically only the types of globally accessible objects are<br>
processed fully (for example functions), but the actual code contained<br>
by functions is not processed at all, and uses are not built at all.<br>
<br>
You can experiment with this using the "duchainify" command-line<br>
utility, and you will see that building the full duchain with uses<br>
etc. is something like 50 times slower then the reduced version.<br>
<br>
Basically, the "find uses" (and replace) code works like this:<br>
* Collect all declarations of the function we want to find uses for<br>
* Collect all source files that recursively include the headers<br>
containing these declarations<br>
* Build the "full" duchain for all those source files<br>
<br>
When there are many source files including the given header(s), then<br>
this will become painfully slow.<br>
<br>
There are two things we could do to speed this up:<br>
1. Do a simple "grep" to filter out source files that can not contain<br>
uses of the given object (this will break with uses within macro<br>
invocations though)<br>
2. (optional) Only build uses for contexts that contain an appearance<br>
of the string found by the "grep".<br>
<br>
Each of these would bring a huge improvement, but the second is pretty<br>
complicated to do.<br>
<br>
Greetings, David<br>
<div><div></div><div class="h5"><br>
--<br>
KDevelop-devel mailing list<br>
<a href="mailto:KDevelop-devel@kdevelop.org">KDevelop-devel@kdevelop.org</a><br>
<a href="https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel" target="_blank">https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel</a><br>
</div></div></blockquote></div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8">But why is the current file reparsed when you're renaming a local variable? The current file should have all the information already, no?<div>

<br></div><div>Aleix</div></div>