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
Add Frame Time Recording #4636
Add Frame Time Recording #4636
Conversation
@@ -175,6 +175,7 @@ struct Values { | |||
// Debugging | |||
bool use_gdbstub; | |||
u16 gdbstub_port; | |||
std::atomic_bool record_frame_times; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this shouldn't be a part of the settings; I think it's more suitable for being a temporary state in PerfStats.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like not saving it between runs? I don't see the advantage to that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not saying you shouldn't save it (though I doubt the necessity of this), but even if you do, you shouldn't use the settings as a state of PerfStats. (and if you look carefully no other fields here are atomic)
Instead make this just a bool
and add an atomic_bool
to PerfStats
, and initialize that atomic bool from the settings on load and save it on exit.
review comments addressed and bug squashed |
refactored to not use unique_ptr |
instead of stringstream
fmt date formatting is broken on mingw
lower deviation due to no reallocations
I'm currently strongly against this. It appears totally unnecessary to me. Profiling will be done differently, using more powerful tools. There's just a ton of unanswered questions, especially considering this PR has been here for 14 days already:
|
Nobody asked any, now that there's questions I can answer them.
Right now I have the tooltip set to tell the user to look in the log directory. I wanted to avoid popups. If you have a better suggestion I would be open to it.
I wasn't aware that microprofile had this capability because it's poorly documented in the application; searching "microprofile" on google gave irrelevant results and nobody told me for the 14 days this was open. I don't see an option to actually save the data microprofile outputs but maybe that would be a better approach. I also find it more convenient to start recording frametimes when the game starts, because I was using it with our input recording feature to get reproducible results.
Most third party applications used for measuring frame data such as MSI afterburner don't work properly in conjunction with Citra as far as I can remember.
Because I saw reasons for non-developers to use it. It was mentioned on the yuzu discord that it might be useful for youtubers to get hard performance data. (A single checkbox is also much less intimidating to these users than a separate UI full of seemingly redundant options, some of which have a non-trivial performance impact if enabled accidentally.)
If you have other feedback then you can say it. |
If the feature is only going to be used in very specific instances ( Seems to be like this is just feature creep in action. |
I gave one possible use for it, personally I was using it to compare performance data with different compiler optimizations in Excel. IMO feature creep isn't a real issue if it doesn't detract from user experience. If you want an example of bad feature creep try using gimp without searching anything on the internet. |
I'll put one of my concern expressed on discord here to remind that this not resolved yet:
Feature creep is more of a dev issue rather than a user issue that might hinder the development from making essential process. |
I'm going to close this. It seems like the better approach would be to use microprofile to save the data but I didn't want to spend a lot time on this in the first place. |
Frame times are recorded until the game stops or the user unchecks this option:


Then the data is dumped to a .csv file in the log directory and can be used to make fancy graphs like this:
This change is