Skip to content
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

Evaluate using more optimizations like LTO, PGO and PLO #616

Open
zamazan4ik opened this issue Nov 30, 2024 · 0 comments
Open

Evaluate using more optimizations like LTO, PGO and PLO #616

zamazan4ik opened this issue Nov 30, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@zamazan4ik
Copy link

Request

I suggest enabling more optimizations for the project that can help with achieving better performance and binary size of the project:

  • Link-Time Optimization (LTO). I've searched over the build scripts but I didn't find a place where it's enabled (maybe I am wrong). This optimization is supported by all major C++ compilers and can be enabled even via a CMake flags
  • Profile-Guided Optimization (PGO). According to my multiple tests, this optimization is specifically useful for various parsing routines, etc. It definitely is worth giving it a try and measuring performance gains from PGO for clp. PGO is also supported by all major C++ compilers like GCC, Clang, MSVC
  • Post-Link Optimization (PLO) via tools like LLVM BOLT. This optimization can help to optimize clp better even after applying PGO.

Possible implementation

I think LTO can be quite easily enabled on the CMake level.

Regarding PGO at first, I recommend performing some kind of benchmarking with it on different real-world scenarios. And only if it shows improvement - integrate it in some way into the project. E.g. it also can be done via an option in the build scripts.

PLO I recommend enabling only after PGO since PGO has much fewer possible limitations compared to PLO.

@zamazan4ik zamazan4ik added the enhancement New feature or request label Nov 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant