This blog post is contributed by Jonathan Marshall, Markus van Kempen and Ahmed Farrag.
This blog introduces three factors that contribute to giving your users the excellent performance they demand.
The stakes are high. Studies show three important time limits for optimizing web and application performance:
- 0.1 second is the limit for the user’s perception of an instant response.
- 1 second is the limit for the user’s flow of thought to stay uninterrupted.
- 10 seconds is the limit for keeping the user’s attention.
In reality, if you experience much more than a one-second response time you’ve likely moved on to something else.
The following are some key mobile design principles to help you really nail app performance. It’s worth stating that the speed and fluidity of your app interface is critical too, but this isn’t our focus today. Performance of the user experience is largely addressed by the design guidelines provided by the various platforms.
Three performance principles
1. Get the data near as possible to the mobile device.
Reduce latency for data access wherever possible. Some examples of approaches to do this are cloud-based databases or caching technologies:
- A database as a service (DBaaS) such as Cloudant can handle a massively concurrent mix of low-latency reads and writes. Its data replication and synchronization technology also enables continuous data availability, as well as offline app usage for mobile or remote users, which significantly enhances the performance of mobile apps.
- A caching technology such as WebSphere eXtreme Scale can provide an elastic, scalable, in-memory data grid to offload frequently accessed business data from unscalable enterprise systems into a very low-latency cache.
Both of these are available from the IBM Bluemix platform.
2. Get only the data you need.
Organizations have been opening up monolithic enterprise systems and applications. They’ve been surfacing data through service-orientated approaches and, more recently, through the burgeoning application programming interface (API) economy. This provides a great opportunity for mobile app development, but it doesn’t come with a guarantee of good performance.
It is imperative that you focus on service design specifically for mobile, or even specifically for the mobile application in question.
Following on from the first principle, consider implementing app-specific services for improving the performance, such as the following:
- Provide just the data that you need. A generic API or service call will likely provide all the data needed for a number of use cases and scenarios. You may only need a fraction of this data for your app. From a performance perspective, moving this data is just wasted time. Create a service to optimize the amount of data for the specific use case.
- Reduce the number of calls for data. Mobile apps typically pull data from different sources. Often there is great benefit mashing up otherwise separate data to provide additional value. However, additional calls for data are expensive from a performance point of view and can often be redundant. When creating optimized services, consider reducing the number of calls to data by performing the mashup server-side or in the cloud.
3. Improve the perception of the performance of your mobile app.
Yes, really, you can make your app pretend to be faster. All you are doing is addressing the way that the performance of your app is perceived.
- Always, always, always give your user instant feedback. Handle connectivity issues smartly. Even producing a pop-up window buys you some time to go get some more data, and, importantly, it maintains the engagement of your user. If the data will take a moment to load, communicate this well.
- At application startup do the minimum amount of data access needed to fire up the app. For example, make the user press “log on” to get started. This provides an instantly responsive app, buying you time to do any other data access asynchronously.
- Prepare the next screen in the background. Mobile apps often follow a prescribed flow through the functionality. Load the data for the next screen in the background while the user is populating the current screen.
In summary, to ensure optimal performance for your mobile application, consider data proximity, size of data and user interface (UI) responsiveness as key factors in your design.