Introducing MicroProfiler memory profiling, flame graphs, diffs, and much more

I’m glad you like it!

We planned to release the diffs closer to the end of the year, but since we managed to finish this feature earlier, why not release it right away, right?

As for zooming in, it seems that zooming and the find feature are the most welcome additions overall, haha.

4 Likes

That makes sense! I was starting to realize that it might only apply for captures and not the regular view.

That said, I’d love to see X-Ray view for the regular, moving view of the MicroProfiler. This will make it easier for younger/less experienced developers, as recording captures can be quite a skill curve.

3 Likes

I’d love to see X-Ray view for the regular, moving view

Yep, I agree. We have it in our plan.

5 Likes

Wonderful! I’m very glad to hear that, thank you!

2 Likes

This function can help me in the future

1 Like

These are absolutely insane updates, great job at Roblox.

2 Likes

Including argument data is memory-intensive. This means we’d be able to display far fewer frames. However, your suggestion has got me thinking - maybe we can add detailed info only to those scopes that take an unusually long time. It’s worth researching.

2 Likes

Adding onto this; I saw no documentation on certain scopes, even after extensive searches on different engines. It’s not immediately obvious what a scope does sometimes, and I need to know when to blame you, not myself :grin:
For example, WaitForLock - who knows what it does other than the most highly esteemed engineers; but it chews up 30ms intermittently and that translates to stutters and I don’t like it and I’d love for it to be documented so I can plan ahead for a countermeasure.

Please please, pretty please? :pleading_face:

1 Like

Would be super appreciated! Since we’re spitballing ideas: it would be super awesome if the client could attach some small basic data, to describe what the user was doing at the time. Our game for instance has a lot of different gamemodes and worlds, and so being able to prepend this information into the microprofiler dumps we receive from users would be amazing!

3 Likes

This is my current foremost issue with the microprofiler - scopes are not really documented anywhere. You may get lucky if it has a useful name, but otherwise it’s difficult to pin down. Hope comprehensive documentation can get released at some point.

There is information about some scope names in the documentation: MicroProfiler Tag Reference

This is very nice, thanks for the link! Don’t know how I missed it. I imagine some stuff is still missing, but this is quite a bit of tags.

1 Like

Whaaaaat! This is cool! I see some definitely useful stuff in here, maybe one day this will get expanded on? Maybe, just maybe?

I like this idea. Since we don’t include screenshots in the dumps (yet), having a text description should help to provide context. However, each game has its own specific context. I think we could add something like debug._some_new_function_to_add_meta_info_into_dump_(_custom_string_up_to_XX_characters_) so developers can call it when the game mode changes and see it later in the dumps.

1 Like

Could you please provide a microprofiler dump for more context if you encounter this again?

Wow! I love this update. I can now see memory allocations way easier and comparing data is now way easier. I love it!

1 Like

I got one by accident while debugging something else.

microprofile-20241031-153418.html (3.2 MB)

The game is here if you need it.

1 Like

Thanks, I’ve forwarded it to the rendering team.

I think that it really needs to get expanded, it’s still missing some tags that would be useful to add. One of them are CoreScripts like CameraModule, ExperienceChatMain, TopBar, SchedulerHostConfig.default, PlayerListManager, etc. I know that not much developers can do to optimize the performance of these scripts, but it would still be good for developers to know what these scripts are for and what they do to avoid confusion. Perhaps it would also make developers aware of the performance issues of them so they can report them to Roblox to get them fixed. Also documentation for Occlusion Culling tags should be added when the feature releases. Other than that, I could only think of tags that don’t appear as much or subcategory tags like FastCluster* :updateGeometry or FastCluster* :updateEntity that could have more information added to them.

2 Likes

@ZenMa1n I noticed that the mouse is obscured by the flamegraph UI. I’ve posted a bug report here: