It’s genetic. Humans want it faster. Evidence abounds: The Speedy Weeny microwave hot dog vending machine, Chuck Yeager’s sound barrier record, techno dance, and don’t forget the T-Mobile girl’s alter ego as a provocative motorcycle speed freak. Zoooom.
Diametrically Opposed Goals Make Achieving Blazing Fast Apps Hard
To survive in the Darwinian app store, mobile app developers must also provide more content and more features. This demand for more can quickly gobble up any increases in bandwidth, memory, and computing power – a mobile corollary of Parkinson’s law. So, developers can’t just rely on the T-Mobile girl or chip makers to make their apps faster.
You Need A Bag Of Blazing Fast Tricks
I have conducted assessments for Forrester clients to either solve performance issues or insure that none will occur. The biggest issues I’ve seen: lack of continuous performance testing and a myopic view of performance practices. It takes a bag of tricks to excel at performance:
- Performance testing. How can you possibly improve performance if you don’t have a baseline? You should test your mobile app from the end user’s point of view. For mobile web, try services like SmartBear or Compuware Gomez. For mobile apps, consider Neotys. Be sure to load test so you understand performance across different load profiles.
- Local caching. For apps that are content intensive, caching content on the device can boost performance by avoiding excessive trips through the mobile network and your content infrastructure. Depending on your data, you can store files or use a mobile device relational database such as SQLite or Sybase SQL Anywhere.
- Content delivery network (CDN). CDNs provide numerous services that can speed up your application including edge caching to reduce network latency, network routing optimization, content pre-fetching, and more. However, for mobile the "edge" is the mobile carrier versus thousands of ISPs, so the impact may be smaller than for web sites. Akamai is the giant here with the most services and greatest global presence. Other CDNs include Edgecast, Limelight, and Amazon CloudFront. Telecommunication firms such as AT&T and Level3 also offer CDN services.
- Compression. Reduce the size of your data by using whatever compression techniques are available for your content. REST services that return JSON have lower overhead. Be sure that images are sized properly for the device. Also, make sure HTTP compression is turned on if you have a web server.
- More-efficient protocols. Most apps rely on HTTP calls to exchange data with services. Google is working on a new networking protocol called SPDY to augment HTTP. Firms such as F5 are building SDPY into their application delivery controllers. You can also improve your app-level protocol by redesigning your services to make a smaller number of calls and return only the data needed.
- Asynchronous transfer. If you have a large piece of content or big data that takes too long to load, then you can load it little by little. Your app can start using the content while it loads rather than waiting for the whole thing to load. Video streams are the defining example of content that is asynchronously streamed. After a bit of buffering, the video can begin to play while the rest is loaded in the background.
- Web content optimization. If your app is mobile web or hybrid (native shell that renders HTML) you can use software such as Riverbed Stingray Aptimizer or Blaze FEO to intercept and automatically optimize web content using performance rules such as those developed by Google PageSpeed.
- Native code optimization. Poorly written or bug-filled code can also cause performance problems. Run a profiler on your code or do code reviews to identify potential issues.
- Back end services. If, after performance testing your app, you identified back end services as a performance sapping culprit, then you have to conduct an architecture assessment to determine how to speed up those services. If you rely on third-party services, you are at the mercy of their performance excellence.
- Distractions. When all else fails, use polite user interface distractions such as “Please wait.” or show a progress bar.
Summary: Make it faster. Don't stop 'til you get enough…performance.