| || |
Optimus 2X, dexopt, and lag.
Some of you may have read Paul O'Brien's reason why the 2X's UI seems jerky. I don't know how "jerky" it is (haven't used one yet) but I'll take Paul at his word. Without getting too technical, Paul found that LG had the system set-up in a way that dexopt functions (think of it as pre-building the executable part of the code) aren't done at boot. Engineering and test ROMs are compiled this way, because it makes the boot time (especially the very first boot) much shorter. If you have to reboot a hundred times while you test something, saving a minute or so each time all adds up.
The trade-off here is that dexopt has to be done for each installed app when they are launched. This makes the first time an app is launched a little laggy, and even affects it each time it's launched after that slightly. The system has to check if the executable part of the code is present (every time) and if not, build it (first time).
That's a decent layman's version of the issue. LG has chosen to sacrifice a little bit when loading apps, in order to have a much faster boot time -- especially the first time the phone is ever booted. If you play with custom ROMs, you know how slow and janky the very first boot can be.
So when I read about Paul's issues with the 2X, I got curious. When I get curious, I start to ask questions, and who better to ask than LG? The people at LG are great folks by the way -- I've talked with them several times and they are always very responsive to anything we ask of them. They took a few days to evaluate and test a few things, and here's what they had to say:
I also asked Paul what else (if anything) he had to say, and if he responds I'll be sure to edit this post.
The Android OS generally provides an optional feature called ODEX that preloads applications in the smartphone memory when booting the phone. But with its new Optimus 2X smartphone, rather than adopting ODEX, LG Electronics took the decision to use modified code that gives the phone an extra-fast booting speed the first time you switch it on. First impressions are crucial with new phones, so we wanted to give our customers an extra feature they could really value.
It has also been said that the absence of ODEX can mean that applications take slightly longer to run the first time they are used. However, there will be no lag after the second use, once the application has been loaded to the memory. Having tested the phones extensively, our R&D engineers believe that the slight lag is unnoticeable to most consumers.
The absence of ODEX was a deliberate decision on our part, because we thought having a faster boot time right out of the box was more valuable. Thus this is not a systematical glitch of any sort and we will continue to monitor this case closely but if we feel like this is causing more problem than benefit to our users, we may consider making changes through a software upgrade.
Again, I've never used an Optimus 2X. But I know some people who have. Some say it acts "weird" every now and then, others say it runs great. Makes me think LG knew what they were doing, and the average consumer is going to be happy with their choice.
The good news -- it takes about 10 minutes to fix it (root of course) if YOU think it acts "weird". And LG is still following their "open" policies with bootloaders and rooting, so I'm gonna reserve judgement until I get my grimy paws on one. [source]
Edit: Paul has taken the time to respond, and he disagrees:
Harsh words, but I trust Paul's judgement. I use his MCR as the daily driver on my Nexus One -- he knows how to build Android. This settles it -- I'm just going to have to get an Optimus 2X and see for myself. Being an Android blogger is a rough life
Hmmm, I think that LG are spinning you a line here for various reasons. First and foremost, the 'slight lag' has been noticed by virtually every review i've read, and applying my fix removes it. Simple as that, customers were dissatisfied with their experience. Secondly, to claim it is for a faster boot time is a bit insane. The pre-dexopt happens primarily at FIRST device boot so while that will be slower, subsequent boots will not be much slower as only dex checks are performed. Finally, Google's own specifications state that devices must NOT be shipped with pre-dexopt turned off.
It's nice that they responded to you, but the simple fact is that without exception feedback to reverting the pre-dexopt setup to normal behaviour has been positive. :-)