Hi Andrew
I propose the following:
- Decide on clear goals in terms of API compatibilty, Java version compatibility, and CPU/RAM tradeoff goals.
- Break down each of the patches and bring forward those that are eligible one by one, and ~in change order. I did put break the branch into each logical group of changes per commit and push that. This should be able to form the basis of a smaller
set of changes.
I'd be very happy to get started on this, assuming we can clear up the API/Java/RAM questions:
There are a few possible solutions which will have different tradeoffs. We could have a simple solution like we do with heap size usage - allow the user to control it with a JVM flag:
-Djava.util.concurrent.ForkJoinPool.common.parallelism=X
I genuinely do not have not a good handle on the MAT ecosystem and need to be guided by community feedback in terms of boundaries to sensible solutions, especially in the heap usage area. Would controlling parallelism with a JVM flag be sufficient?
Our use case is typically the exact opposite in that the more resources we can use, and
faster, the better, since we can release those resources back to the
pool anyway.
For background on why I created a single PR: I wanted to make it easier to understand the overall impact and justify the value of the changes as a group, since many of the individual changes don't have a significant impact on their own. If this is no longer useful, we should just throw it away and start on a fresh branch/es.
Thanks
Jason