SFTtech / SFTtech/openage

Profile guided optimization (PGO) integration

Open
#205 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: buildsystem just do it nice new thing ☺
Dominant language
Python
Stars
14.4k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

Our buildsystem should support PGO. This is supported by clang and gcc (-fprofile-*) and will lead to a performance improvement. Of course this does not replace sane programming 😉.

This has to be integrated in buildsystem/cpp.cmake and is enabled by a cmake and configure-option.

Profiling procedure:

  • Compile the binary with profile generation support
  • Execute the binary and do typical actions:
    • Run all test cases
    • Run demo game
    • Use as many codepaths as possible that will be active when actually playing
  • Recompile the binary with the profiling information
    • This optimizes the branch prediction for real-world use.

Might be interesting what the performance impact will be.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with buildsystem/cpp.cmake and inspect how existing cmake and configure options are defined. Read the linked Clang and GCC PGO documentation, then trace the stated profiling procedure from profile generation through running tests and the demo game to recompilation. Done means the build system exposes the requested option and supports the described PGO workflow for both compilers.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.