While it may be a considerable amount of work, user-perceived high-performance applications will take each of these factors into consideration and provide an experience that works well in different scenarios. For example, on a powerful CPU/GPU device, your application might opt to overlay beautiful, yet complex, textures on objects to enhance the visualization of a game. But that same application might use simpler textures on a less powerful device. The end result is that both users will have a positive experience, but the visualization will be different. A strategy that I have employed is to interrogate the device’s capability as a “calibration” step and then adjust the complexity of my application based on the capabilities of the device. Or stated another way, a user with a lesser performing device does not want to see a beautifully rendered screen that is so choppy it is not useable. This approach is somewhat analogous to a strategy we employ in web development: graceful degradation. While graceful degradation has deeper roots than front-end application behavior, the idea is simple: ensure that your application looks and performs well based on the capabilities of the device. Not all users will have the same experience, but all users will have a good experience.