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

Enable AOT compilation on iOS release builds for much better performance #24338

Merged
merged 2 commits into from
Jul 24, 2023

Conversation

frenzibyte
Copy link
Member

@frenzibyte frenzibyte commented Jul 23, 2023

This also enables Mono Interpreter as a fallback for areas where dynamic code is utilised. I will look into the steps necessary to remove it to close up any remaining possibilities for gains, but I'll do that as a separate follow-up effort later because building osu! with AOT compilation is quite a tedious task, and the performance gain in this PR alone is probably more than enough.

Note that while checking for lazer's performance, I had this PR checked out along with ppy/osu-framework#5888 to render the game at 0.5x scale (helps with crowded screens such as beatmap listing), and also https://github.com/smoogipoo/osu-framework/tree/masking-ssbo (+ osu/osu-resources changes).

In addition, I've removed mentioning of dotnet/runtime#69410 as we plan to enable source generation on Realm, which will fix this (at least that's what I saw last time I tried this, because the failure was inside Fody's "weaved" code). Also, there's been work towards resolving that issue thread at a .NET-level starting at .NET 8 preview 7.


This adds a magnificent boost in rendering performance on iOS. Anyone who's been struggling with performance before on their iPhones/iPads should give this release a try!

@peppy
Copy link
Member

peppy commented Jul 24, 2023

I will look into the steps necessary to remove it to close up any remaining possibilities for gains

I'm 99% sure we don't want this, because the workarounds required to make this work are quite involved. Like, I'd sooner want to remove the json fallback in messagepack (and any other similar workarounds) since we don't need them anymore, and only revisit in a future where we are compiling AOT across all platforms or something.

@frenzibyte
Copy link
Member Author

As in we don't want to fall back to Mono interpreter? or not bother looking into ways to avoid falling back to Mono interpreter?

@peppy
Copy link
Member

peppy commented Jul 24, 2023

the latter

@peppy peppy merged commit 2a06f11 into ppy:master Jul 24, 2023
@frenzibyte frenzibyte deleted the ios-enable-aot branch July 24, 2023 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Consider switching back to AOT compilation on iOS for potentially better performance
2 participants