secure-software-engineering / phasar

A LLVM-based static analysis framework.
Other
918 stars 140 forks source link

Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT #668

Open zamazan4ik opened 9 months ago

zamazan4ik commented 9 months ago

Hi!

Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects. The results are here. LLVM-related results are here. According to the tests, PGO usually helps a lot with the compiler and compiler-like workloads (like static analysis). That's why I think trying to optimize Phasar with PGO can be a good idea.

I can suggest the following action points:

Maybe testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too but I recommend starting from the usual PGO.

fabianbs96 commented 9 months ago

Hi @zamazan4ik, thank you for this suggestion. I aggree that we should make use of PGO at some time -- recently, we enabled LTO which already helps.

To automate the process of PGO-optimized builds, we need representative (real-world) analysis targets for all kinds of analyses that PhASAR supports. This seems very doable for our helper-analyses, such as alias-sets and ICFG. However, for our most performance-critical part, the IDESolver, this is more problematic, as it is implemented as template that gets instantiated for each analysis problem to solve.

We will add PGO experiments to our roadmap.