On 2016-08-31 08:15 AM, Jiří Techet wrote:
On Wed, Aug 31, 2016 at 1:22 PM, Thomas Martitz <ku...@rockbox.org> wrote:
[...]
Wait, a AST comprising a million nodes doesn't result in a million
autocompletion candidates. Anyway, how does the number relate to our
discussion?
It appears to me you don't really read what I'm writing - I'm talking about
updating TM workspace tags which has to happen every time file is reparsed.
As I said, autocompletion list population performance doesn't matter much
because it will contain a lot less tags.
And by the way, projects with 1 000 000 tags will have more like 100 000
000 nodes in AST.
To give a sensational example, a minimal "hello world" C++ program:
#include <iostream>
int main()
{
std::cout << "Hello World" << std::endl;
return 0;
}
CTags:
$ ctags -o - hello-world.cc | wc -l
1
Clang AST:
$ clang++ -Xclang -ast-dump -fno-diagnostics-color \
-fsyntax-only hello-world.cc | wc -l
37806
Obviously since C++ compilers operate on translation units, the latter
includes all of what's brought in through includes. If I manually strip
it down to just what humans see in the source file, it's around 15
lines, but the 37806 is what a libclang ft-plugin would be working with
in the AST.
I couldn't speculate what a larger project like LLVM itself would parse
to, but I suspect it would take a not-insignificant amount of time for
an ft-plugin to even traverse the AST once (eg. to find all the nodes
originating in a particular source file).
Cheers,
Matthew Brush
_______________________________________________
Devel mailing list
Devel@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/devel