Original Link: http://www.anandtech.com/show/3893/caring-for-the-elderly-ios-41-speed-boost-on-iphone-3g



Introduction

Before I dive into the numbers, let’s talk briefly about what makes the iPhone 3G (and 2G) fundamentally different from the 3GS. The iPhone 3G, like the 2G, is based around a 412 MHz ARM11 family Samsung SoC which implements the ARMv6 instruction set. It’s got 128 MB of LPDDR1. By contrast, the iPhone 3GS uses a 600 MHz ARM Cortex-A8 family SoC which runs the ARMv7 instruction set, and packs 256 MB of LPDDR1. The iPhone 4 similarly runs ARMv7 code.

By nature of the two platforms running different instruction sets, their underlying iOS kernels are completely different, even though ARMv6 is a subset of ARMv7. In all likelihood, Apple embraces ARMv7 for speed gains on 3GS and 4, and therefore has to keep a separate kernel for ARMv6. That applied with iOS 3.x and applies the same way with iOS 4.x.

For whatever reason, it seems as though the kernel for ARMv6 devices like the iPhone 3G weren’t quite as optimized as they could have been. As a result, performance on iOS 4 with the iPhone 3G was sluggish.

Speed Testing the Platforms

Even while waiting in line for the iPhone 4, numerous iPhone 3G users I talked with noted a dramatic slowdown. Using one, I was amazed how sluggish things like even jumping in and out of the messaging application were. At the time, I wasn’t sure how much of this to attribute to the iPhone 3G just being an older device, or the iOS 4.0 update. 

iPhone 3G users aren’t asking much, they just want the original speed and responsiveness of their devices back. For these tests, I borrowed a friend’s iPhone 3G and ran through a gamut of tests on iOS 3.1.3, iOS 4.0.2, and the iOS 4.1 GM which should be released September 8th. I also ran tests on an iPhone 3GS running 4.1 GM, though I’ve excluded results in two tables because the numbers destroy the dynamic range on the graphs for seeing change on the iPhone 3G.


iPhone 3G, iPhone 3GS, iPhone 4

Note that downgrading the iPhone 3G is easy since Apple isn’t enforcing SHSH blobs on it. If you can grab the image from any number of thoughtful repositories online, you can restore and downgrade with it. You might get stuck inside recovery mode at the end - but for that, simply use RecBoot.

Browser Testing

For all of these tests, I used a completely fresh, brand new restoration image with no other installed applications and connected to my 802.11n wireless network. I run tests three times and average, throwing out any outliers. Note that launching from a fresh install is critical on iOS as the platform saves a screenshot when closing, and immediately open that when relaunching so successive launches feel faster. 

Our first test is the SunSpider JavaScript benchmark:

Unsurprisingly, the iPhone 3G on 4.0.2 and 4.1 beats 3.1.2. I say unsurprising because iOS 4.x brings a new version of WebKit with faster JavaScript engine. This is actually the one place where the 4.0.2 update helped the iPhone 3G. Note that the iPhone 3GS runs this test nearly 3x faster, taking 14707.8 ms. 

Next up is Browsermark, which spits out an overall score representative of overall browsing responsiveness. There’s some JavaScript, some parsing, some rendering - it aims to be an all around general speed benchmark. 

This is more along the lines of what people have been reporting with the iPhone 3G, though it isn’t quite as pronounced. iOS 3.1.2 scores higher than 4.0.2, but 4.1 closes the gap some. It still isn’t quite there, but has improved. 

A similar test is to see how fast Safari rotates from landscape to portrait. On iOS 4.0.2, it’s measurably slower than 3.1.3, but how does 4.1 fare? Here we start the clock right as we rotate, and stop as soon as the page has rendered completely - you can tell when the text goes from fuzzy to sharp when Safari has completely rendered the page in the new orientation. 

   

Here iOS 4.1 gets us close to how snappy 3.1.2 was but remains just a tad slower.

 


Application Launches

On the iPhone 3G running 4.0.2, application launches were unbearably longer. This is what really tells the story about how much slower the iPhone 3G was on 4.0.x compared to 3.1.3, and what really contributes to the perception that 4.0 is slower. Playing around with a 3G running iOS 4, everything feels dog slow, but counting by seconds for things to launch is unacceptable anymore.

We’ll start out with the messaging app. For this test, I time from opening the application to when the compose message screen fully appears. With lots of messages, I’ve been on iPhone 3G devices that have literally made the messaging application launch time in the 10s of seconds, so any savings here is a dramatic improvement under those conditions.

Thankfully, iOS 4.1 brings messaging launch time nearly down to 3.1.3, but it isn’t quite there. 

Next up is the camera. We noted in our original iOS 4.0 walkthrough that the camera application launches felt much speedier on a 3GS with 4.0 than 3.x. Here we see a similar story for the iPhone 3G.

    

Dramatic improvement over iOS 4.0.2, which previously took a whopping 5 seconds to get from tapping on camera to the capture live preview. 

Next is maps. For this test, I time from tapping on the maps icon to when the entire preview of the United States has loaded. 

iOS 4.1 again dramatically improves on 4.0.2 speeds, but can’t quite come close to 3.1.3 for whatever reason. I’m puzzled by this and ran and re-ran the tests, 3.1.3 is still faster at maps.

Up next is settings, again I time from tapping on settings to when the application is fully loaded.

Again a definite speedup from 4.0.2, but still not quite 3.1.3 speeds.

The phone application is one of a number of iOS applications that always run in the background. In theory, launching the phone and dialer should always be snappy, after a slower initial run. We test the initial run from tapping on the icon until the dialer pops up.

Dramatic improvement from 4.0.2 to 4.1. I tested and re-tested, and it’s close between 3.1.3 and 4.1 here. Again, subsequent launches of the phone application are almost instantaneous because it’s always running in the background (along with Safari and iPod) and always has been.

Speaking of Safari, how fast does it launch? Here we test launch from tapping on the icon to bringing up the default set of bookmarks. Remember that after bookmarks pops up you’re finally free to enter a URL. 

Here we see another case of iOS nearly bringing 4.1 into parity with 3.1.3, though a whole 3 seconds is still a long time, but not nearly as long as the nearly 4 it used to take.

Weather is an interesting case - it’s a simple application that’s been around since the first iPhone without much change. iOS 4.1 doesn’t make much difference:

Here we tested from tapping on the icon to when the default Cupertino result fully loads. It’s clear there’s not much Apple could do to make this faster.

The App Store is an important application, as it often feels like the most sluggish default Apple program on iOS. We’re connected over extremely fast WiFi, so network throughput should be negligible. Here, we’ve initially installed an application and are coming back to the application detail page accessed through search, and time from tapping on app store to getting to that result.

Again we see that iOS 4.1 is better, but still not as fast as 3.1.3. Admittedly the App Store has added a few things since 3.1.3.

Overall Performance Comparison

How do things look if you total up all of these application launch times? Better than 4.0.2, but still not quite as fast as 3.1.3:

On the whole, application launches are an average of 15% slower on the iPhone 3G running iOS 4.1 than iOS 3.1.3, down from nearly 44% on iOS 4.0.1. 

There's another general performance test that runs on virtually all iDevices called Geek Bench. I ran it on the same devices and got a similar order of scores:

There's not quite enough dynamic range to really see how much 4.1 improves from 4.0.2 unless you dive into individual scores that are composited into this average GeekBench Score, but it shows a similar story. 



Typing Speed

One of the major annoyances I’ve encountered on the iPhone 3G running iOS 4.1 (other than just how slow it is) is typing. It’s simple enough - a dialog box will pop up, and I’ll start typing as quickly as I would on the 3Gs or 4. On those two devices, I’ll generally get to the end and be satisfied with my result, minus an error or two of my own.

On the 3G however, the story is entirely different. When I start typing just about anywhere, the device is slow enough that it often misses the first character or two of what I’ve typed entirely. I don't know if this is something new with 3.1.3, with 4.0, or even if the iPhone 3G had this problem (I don't know because I never owned one, I was a staunch Windows Mobile diehard at the time), but it's incredibly frustrating.

Even as I’m typing, keyboard input on the 3G seems to lag at least a word or two behind, giving me little feedback visually or aurally to verify character input. It's like I'm running circles around the thing just by typing. I can live with waiting for applications to launch (I guess, to some extent), but lagging input is generally what drives me to the point of hurling devices around the room. Just ask my old HTC Touch Pro. That device had an awesome hardware keyboard, but a predictive input system and keyboard driver that never were fast enough for me - I would finish typing, and characters would stream in for 10s of seconds. Amazing.

The 3G isn't quite to that level of frustrating, but it's close for me. Really close. 

For this test, I fired up iTextSpeed and went at the default WPM test fast as I could, just to see if I could out-type this thing. 

  

Surprisingly, I found that the iPhone 3G was slower to type on with 3.1.3 than 4.x.

Part of that could be improved word autocorrection, or maybe I’m imagining iOS 4.x still feeling slow when it comes to typing. That lag between first character entry and recognition remains, however, and the whole time words were lagging behind input. It's a chaotic experience typing at maximum speed on the 3G because you're given feedback about a word later. For some perspective, on the 4 I can text in the low 80s on a good day. 

Conclusions and final thoughts

What it comes down to is whether iOS 4.1 is faster than 4.0.2, and for that, the answer is an unequivocal yes. The update brings the iPhone 3G nearly back to the snappiness of 3.1.3 in most places, and you get a much faster WebKit JavaScript engine with compatibility updates to boot. That said, it’s obvious that Apple still hasn’t quite managed to optimize the ARMv6 iOS kernel to be quite as fast as it used to be under iOS 3.1.3. 

I'm going to be painfully honest though. If you’re the kind of person that even remotely cares about how fast   your device is or applications launch, you shouldn’t be using an iPhone 3G anymore. It’s that simple. Use the 3G as a backup phone in case something breaks, give it to a family member with a dumbphone, or sell it on eBay or Craigslist - just don't expect the 3G to get any faster. Apple considers the 3G's speed issue fixed, even though it's still not quite as fast as 3.1.3 was.

Pick from just about any modern Android 2.x device with a 1 GHz SoCs, and you’ll feel the difference, same with the 3GS or 4. Even the first Motorola Droid manages to feel faster. That’s the architectural difference a completely different generation of ARM devices gives you, folks.

I'm serious. Pick up any modern smartphone, and you'll get something that feels an order of magnitude faster. The difference is just stunning. I don't know if the 3G has always felt this slow or whether it's made a continual march towards being sluggish since launch - I honestly never had one. But the speed of these devices is making me more and more impatient - Anand maintains that faster CPUs and desktops have made him patient, paradoxically. I clearly have much to learn from this master of Zen, as using the 3G for any period of time tries my sanity.

The bottom line is that if you have an iPhone 3G, iOS 4.1 will make you hate how slow your phone is a little less. Apple deserves credit for keeping a device just over 2 years old fully updated and supported. On the other hand, it’s obvious that Apple could have saved some face had it optimized the initial iOS 4.0 ARMv6 kernel for the iPhone 3G a little more than it initially bothered to.

Log in

Don't have an account? Sign up now