You must plan for every feature in your app, and the same is true for performance. Planning for performance consists of determining what your performance-critical scenarios will be, defining what good performance means, and measuring early enough in the development process to ensure that you can be confident in your ability to hit your goals.
You don’t need to completely understand the platform to reason about where you might need to improve performance. By knowing what parts of your code execute most frequently, you can determine the best places to optimize your app.
The users’ experience is a basic way to define good performance. For example, an app’s startup time can influence a user’s perception of its performance. A user might consider the performance of an app’s launch time of less than one second to be excellent, less than 5 seconds to be good, and greater than 5 seconds to be poor.
Sometimes you also have to consider other metrics that don’t have a direct impact on the user experience. An example of this is memory consumption. When an app uses large amounts of memory, it takes it from the rest of the system, causing the system as a whole to appear sluggish to the user. It is difficult to have a goal on overall sluggishness of the system, so having a goal on memory consumption is reasonable.
When defining your performance goals, take into consideration the perceived size of your app. Users’ expectations for the performance of your app may be influenced by their qualitative perception of how big your app is, and you should take into account whether your users will consider your app to be small, medium, or large. As an example, you might want a small app that doesn’t use a lot of media to consume less than 100MB of memory.