Mobile Performance: It’s Not Just the Network
It’s always great to see how your app communicates with networks and web services. But as any smartphone owner will tell you, what he or she really cares about is responsiveness. Why is this app slow? What’s going on when the screen pauses or a “loading …” message appears for ages?
Seven months ago we released the first edition of New Relic for Mobile Apps, which allows you to see the complete flow of information from your mobile app, over the network and into the services you depend on to provide a great app experience. And today, thousands of apps and over 115 million users are benefitting from that visibility every moment of every day.
Up until now you’ve been profiling your app on test devices. But true visibility into the user experience after shipping has been limited. That’s all about to change.
(Re)Introducing New Relic for Mobile Apps
The latest version of New Relic for Mobile Apps adds code-level tracing to our SDK. Our new interaction tracing shows you the exact APIs and application code that consume the most time, on every single device that runs your app. Move from vague crash reports and occasional user feedback to a thorough analysis of your code across all users, and see multi-threaded execution timelines for individual copies of your app working on real data and user input.
How’s that Possible?
Our founder and CEO practically invented application performance management and we’ve been writing low-impact production instrumentation software for five years. Now we’re taking all of that experience and applying it to the Objective-C and Dalvik runtimes. Our SDK traces key methods in system APIs and your code to highlight the overall behavior and performance. Using this technology, we build an aggregate analysis of the speed of each screen and action in your app. We use New Relic’s trusted infrastructure to collect all of that data — millions of app instances reporting every minute — and display it using our unique brand of presentation that over 70,000 web and mobile developers love.
Did You Say Something About Individual Timelines?
Our team is full of developers who have been in the trenches building and shipping mobile apps. Fully understanding the nuances of how smartphone APIs work is challenging. Some of them are vague and poorly documented. And some (especially on Android) vary from device to device.
Processors, memory, OS versions and manufacturer customizations all affect how our code runs. This is compounded by the basic architecture of these app runtimes, where a single thread deals with all of the UI. To compensate, you need to constantly tune your worker threads to balance processor limits against underutilization and over-saturation of I/O and the cell or WiFi connection. Our goal was to find a way to see what was really happening on all of our threads and the hardware while respecting the sandboxes placed on apps.
New Relic has been working hard to provide a seamless experience for asynchronous web frameworks like Node.js and Play 2 on Java. We’ve taken that experience, mixed in some of the networking and hardware-level information that’s so vital to the mobile experience and created Interaction Timelines.
The timeline shows you the flow of your code across threads and across the network, correlated with runtime data like memory and CPU time. At a glance you can see exactly how your code is executing on a given device, how many concurrent network requests are running and whether or not you’re optimally scheduling work across threads. Mouse over a network bar and you’ll see the URL, transfer size and response code. Or click on a method block to see a transaction trace of the code executed within that block. For example, we looked at the above 10+ second interaction trace and immediately saw that we were bottlenecked by a single worker task. A quick adjustment to our AsyncTask pool and the time to present a screen was cut in half, as shown below.
More Mobile Agent Goodness
Mobile app developers face unique challenges when launching a new version or update to their products. We want to improve the release process.
A new launch or major version update means you’re dealing with a lot of marketing pressure. You need data in real time to be able to answer questions and manage expectations. Even if you’ve released a minor update, you need to confirm as quickly as possible that you’ve fixed the issues you intended and make sure you haven’t introduced any new ones in the process.
Our App Version reporting now focuses on comparative analysis between versions of your app. You can still see adoption trends and our tabular performance report. We’ve added the ability to see that data across custom time periods. We’ve also added a version analysis feature that lets you explore performance across versions by network response time and failure rate, with usage and speed from our new interaction tracing. Now you can quickly see performance changes between two versions of your app in a single chart.
But Wait, There’s More!
We’ve received a lot of requests for additional visibility into the behavior of different operating systems. We’re happy to announce that you can now get the same breakdown data for each version of Android and iOS that we give you for your hardware and cell carriers.
We’ve also added detailed data for the top ten most popular Android phones — devices like the Galaxy S4 and Desire HD. You can see the network and interaction performance for these individual models in isolation.
What Are You Waiting For?!?
Start using the latest version of New Relic for Mobile Apps today! Simply update the New Relic for Mobile Apps SDK to get started using these amazing features. And if you’re not using New Relic yet, this is your chance to take advantage of our free 30-day trial of our Enterprise Solution. Just install the SDK to get in-depth insight into your mobile apps today!
Watch this video to see New Relic for Mobile Apps in action: