soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.87k stars 706 forks source link

Optimization and optional parallelization of typing minimization #2059

Closed jpstotz closed 6 months ago

jpstotz commented 6 months ago

I have implemented the optimization outlined in this post https://github.com/soot-oss/soot/issues/1053#issuecomment-2012823796 that reduces the minimization time by 50%.

Unfortunately, as the algorithm itself still has the complexity O(n2) certain large methods still can block method body generation for a long time.

A second implemented improvement allows to parallelize minimization. As multi-core system are common nowadays this can reduce the time necessary to perform typing minimization. Parallelization is in this PR enabled if there are more than 1000 Typing available.

In the end this is not a real solution but it can increase the number apps that can be analyzed within a certain time (e.g. 24 hours).

Unit tests has been adapted to cover both sequential and parallel implementation.