FyroxEngine / Fyrox

3D and 2D game engine written in Rust
https://fyrox.rs
MIT License
7.7k stars 346 forks source link

Evaluate Profile-Guided Optimization (PGO) on Fyrox #498

Open zamazan4ik opened 1 year ago

zamazan4ik commented 1 year ago

Hi!

I am collecting all materials (benchmarks, articles, stories, showcases, etc.) about PGO across different applications here. I am sure there you would be able to find helpful information regarding PGO.

Related to the gamedev domains, I suggest you look at the following things:

We need to check the PGO effects on Fyrox, and if it works well - write a note in the Fyrox documentation about PGO. I'd appreciate your providing an easy way to build Fyrox with PGO. And experienced users will be able to do it on their own for their own usage scenarios. Another option is to optimize Fyrox build with a generic-enough profile. Providing PGO-optimized binaries could be a trickier task (since it requires preparing a good-enough profile) but as an option would be great to see too.

As an additional optimization, I suggest looking at LLVM BOLT. But from my experience, starting with PGO and then using BOLT would be better.

For the Rust projects, I recommend starting with cargo-pgo - it supports LLVM BOLT too.

I understand that the project is still in the early development stages. So I think the issue is just an improvement idea for future developments.