When running my Xtext-based IDE, I have a very large DSL project (~30 files, ~500,000 lines of DSL code). Some individual files are as large as 200,000 lines of code (users of this DSL have used scripts to generate source files in some cases, hence the large files).

Here is a confusing scenario I've seen: The project is fully-built, all files are saved. I modify one line in one file (comment-out an Include statement, for example), and then save the file. What follows is a long build process, where almost all files in the project appear to be rebuilt. The Progress View takes very long to complete and notes that it's "updating resource description for" many files that weren't modified. I would expect that the resource descriptions would only need to be updated for modified files.

This happens with every save, making the IDE pretty unusable for this project. I wonder if anyone has any thoughts on what might be going on. I've profiled the application a bunch of times, but have not uncovered anything meaningful yet.

in case there are cross references among files this is not surprising. Changing one file may affect exported objects that are cross referenced by others. So it is not enough to update the resource description of the modified file.

However, you can hook into the process, adapt the creation of resource description, the calculation whether a resource is affected by the change of another.

Thanks for your reply - it sounds like this resource description processing is a good place to explore. I'm familiar with injecting my own DslResourceDescriptionStrategy and implementing the createEObjectDescriptions(...) method to control what objects get exported.

But controlling some of these other aspects you mention - whether one resource is affected by the change of another, for example - what might be the class or injection point for this?

Files with 200.000 LOC would even make JDT throw up. You should
seriously consider modularization.

If that's not possible, it's likely not solved with a few simple tricks.
You will at least have to dig a lot deeper into the builder, the index,
parsing and linking.

Am 23.01.13 20:28, schrieb Joey Mink:
> Hi,
>
> When running my Xtext-based IDE, I have a very large DSL project (~30
> files, ~500,000 lines of DSL code). Some individual files are as large
> as 200,000 lines of code (users of this DSL have used scripts to
> generate source files in some cases, hence the large files).
>
> Here is a confusing scenario I've seen: The project is fully-built, all
> files are saved. I modify one line in one file (comment-out an Include
> statement, for example), and then save the file. What follows is a long
> build process, where almost all files in the project appear to be
> rebuilt. The Progress View takes very long to complete and notes that
> it's "updating resource description for" many files that weren't
> modified. I would the resource descriptions would only need to be
> updated for modified files.
>
> This happens with every save, making the IDE pretty unusable for this
> project. I wonder if anyone has any thoughts on what might be going
> on. I've profiled the application a bunch of times, but have not
> uncovered anything meaningful yet.
>
> Any thoughts readers might have would be appreciated!