So if a modern browser needs to hit the memory sweet spot for optimal performance do our games also need to work in this bandwidth sweet spot and how can we tweak and profile our games to find this spot?
I’m going to assume that that little ship is going as fast as the space shuttle’s speed of 28,968 kilometers per hour at the top then. I don’t really have a frame of reference for the increase in size of a ram chip though.
OK what if the profiler also had a cpu ram bandwidth measurement and a cpu gpu bandwidth measurement?
Surely these two metrics would help highlight when your game is stretching the hardware to the point that the actual game starts to suffer e.g. FPS drops. And you should see if your game is hitting cpu or gpu bandwidth limits allowing you to focus your optimisations on the relevant bottleneck.
The bandwidth usage lines would top out and frame rates would drop.
On CPU side… I think either AQtime, Intel VTune and several other products offered detailed analyzis - with AQTime being focused on code performance and vtune offering more detailed information about data.
Having said that, due to Unity using C#/IL, profiling hardware CPU probably won’t be useful.
Idea: could Unity calculate hardware platform bandwidth profiles. That you can setup in the profiler and test your game against.
Not sure how detailed these could go but maybe they could even include analysis of individual CPU (caches) and GPUs especially on consoles with locked hardware setups or more common hardware configurations for other devices e.g. iPhones/iPads.
Or what if Unity provided the tools for the community to test their hardware’s bandwidth profiles and submit profiles than other users could test against?
Once again, you focus too much on one aspect of the problem (This time it is “bandwidth”). You already can remotely connect profiler on at least some platforms. Profiling for memory bandwidth could make sense if unity used C++ for scripting.
I suspect that Unity could suffer from this problem, as it has adopted multi-threaded tasking but I suspect it does not provide the tools needed to manage the bandwidth used by these tasks.
I have noticed reports of Unity games that drain mobile batteries even when almost static and games that spike or hiccup during play. Maybe bandwidth controls or profiling could reduce or alleviate these issues.