-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance in large projects #301
Comments
In general I am willing to work on this. There are for sure several large projects out there, wich would profit from this. However, it is hard to implement performance improvements without proper benchmarks. |
I can go do this, but before that is there any notable ones you know that have an existing setup? Anyways, I'm wondering if it should be an optional feature that gets turned on rather than ensuring it speeds up the normal case. By parallelizing the action I linked, we're not doing any less work, rather spreading it out across many more actions. I think this would only be useful in specific setting such as large repos (like I mentioned) and environments where you're using remote execution. |
Unfortunately, I am not aware of such a repo. There are 2 possible approaches to speed things up by parallelism. One approach would be to perform multi threading inside the analysis Action in the Python Code. The other option is what you proposed, aka analyzing each file in a separate action. If we do this, we definitely should hide this behind a flag. I would even make it an |
Hey there, I started using DWYU recently and I love it! One issue I've had with attempting to bring it into a large project is performance, particularly this action taking 10+ minutes in some cases.
The project I am referring to has gigantic (100+ files) cc_* targets that depend on each other. I experimented with splitting that action up to run on a per-file basis rather than per-target. Then, it concatenates the results for all the files in a target. This has worked great for my humungous targets by allowing me to parallelize a lot of the c-preprocessing and file parsing work. Unfortunately, it does seem to slow down simple cases, or if you cannot spawn enough concurrent actions due to say only local execution being used. Does it sound like a good idea to parallelize this action? If not for the general case, what about behind a feature flag of some sort such as an argument to the aspect factory?
I appreciate the feedback, thanks!
The text was updated successfully, but these errors were encountered: