The thing is, the iPhone isn't that fast, but it is able to react quickly to your input by showing you a nice, smooth but slow animation while work is being done in the background. As a result it feels faster.
That's something no other smartphone could do. I don't know how things are today but I looks like Android more or less "solved" the problem by throwing powerful hardware at it.
The killer feature is not really speed, but low input latency. And this is achieved by taking performance in consideration during development. And contrary to the old "premature optimization is the root of all evil" saying, you have to do it early, because while can be relatively easy to increase throughput, latency is much harder to deal with.
This is also part of the success of Google Chrome. While it didn't load pages that much faster than its competition it was great at showing you something quickly. It took ages for Firefox to catch up, and it looks like it did mostly because Chrome became slower over time. How is Servo going BTW?
Funnily enough, first few iPhones were ridiculously underpowered, and there was apparently a lot of tricks being thrown to hide that (things you can learn from salty platform developers XD)
I think I agree with a bunch of stuff you posted, but I can't get past this comment.
> That's something no other smartphone could do.
Either I'm misreading you, or you have a strangely narrow version of the world we live in. What is so magical about the iPhone that no other smartphone can "react quickly to your input by showing you a nice, smooth but slow animation while work is being done in the background"?
(Part of my doubt probably comes from using a OnePlus 7 Pro as my daily driver. 90Hz refresh rate and everything is ridiculously fast and smooth. But that's not actually possible, is it?)
There is nothing magical about the iPhone especially not on the hardware side.
I don't know how but if you look at input response time charts, especially in the early days, the iPhone is among the best, if not the best by a large margin. Less abstraction layers? Better tuned OS? More attention given to latency? More trickery? Apple's level of integration and closed ecosystem certainly helps here, and I can easily imagine Steve Jobs pissing off every single employee that wasn't fired for the smallest hiccup. I am far from an Apple fan and I don't own any of their stuff but I have to admit that on some points, they are really good. And as a developer, I have a lot of respect for those who care about performance.
Your OnePlus 7 Pro is a beast. It is fast and smooth because it has quasi-desktop class hardware inside. That's the "solution" I was referring to.
To be fair, Android did work on smoothness. It was called "project butter". But IMHO, they still didn't manage to match Apple on equivalent hardware. I don't know about the situation right now but I hope everything is smooth considering the ridiculously powerful hardware they put in modern flagships.
The iPhone has used a 120hz touch digitizer for a long time, while Android phones have usually used only a 60hz touch digitizer. So while the screen refresh rate was only 60hz, they could start reacting and creating the animation sooner.
> you have to do it early, because while can be relatively easy to increase throughput, latency is much harder to deal with.
Hum... I don't think that makes much sense. Yes, there are some latency optimizations that are certain and architecture wide, so they are much easier to do at first write time, but there are a lot of latency optimizations that are iffy and local, and thus much easier to do with an actual profiler running.
The thing is, throughput optimizations also come on both forms. I'm having a very hard time remembering any large and general enough experience on the ratios, or arriving at a property that would change them for latency or throughput. I think that dimension is really not relevant for them.
I guess the OP should have said that the "perception" of speed is the killer feature.
I find Android is now terrible on both my Samsung Tab 2 and my Galaxy S8. Sometimes I click something and it takes over a second to do any UI changes and looks like it hasn't responded. Just as you go to click it again, it comes up. I find the same in multiple apps where basic actions take too long even simple menu/view apps like email.
I don't know what has happened but it does seem crazy that in 20 years with hardware that is 1000s of times more powerful, we still can't consistently solve click latency.
Android has always allowed the exact same trick iOS does to make it seem that apps launch quickly — show an "outline" of the UI while the real one loads. Though it does take some drawable and theming wizardry to get it right. Some apps, on both platforms, use this to show a splash screen.
The iPhone is by a good margin the fastest phone on the market, on pretty much any kind of benchmark.
Animations are very seldom used on iOS to hide any work happening in the background. Most things happen instantly, and animations are added for usability, to give spatial hints and make the UI easier to follow.
That's something no other smartphone could do. I don't know how things are today but I looks like Android more or less "solved" the problem by throwing powerful hardware at it.
The killer feature is not really speed, but low input latency. And this is achieved by taking performance in consideration during development. And contrary to the old "premature optimization is the root of all evil" saying, you have to do it early, because while can be relatively easy to increase throughput, latency is much harder to deal with.
This is also part of the success of Google Chrome. While it didn't load pages that much faster than its competition it was great at showing you something quickly. It took ages for Firefox to catch up, and it looks like it did mostly because Chrome became slower over time. How is Servo going BTW?