Sunday, January 8, 2017

Dissecting Performance: A Look at What Makes the OnePlus 3 & 3T Excellent Real-World Performers

To Android enthusiasts, speed matters — we recognize we use our phones for hours upon hours every day, often in quick and short bursts, and we want the best out of our time and often-expensive flagships.

Surprisingly enough, it's some of the least expensive flagships that performs the best in the real world — we are talking about the OnePlus 3 and OnePlus 3T, the affordable premium smartphones that still manage to pack bleeding edge hardware. The processing package of these phones should be enough to suggest exceptional performance: a Snapdragon 820/1, 6GB of  DDR4 RAM, and even UFS 2.0 storage, the only component that has an update available in modern smartphones like the Huawei Mate 9. For all intents and purposes, the OnePlus 3 and 3T have the best chipset and RAM configuration that non-Samsung and non-Huawei Android smartphones can have at this moment in time, and they will stay at the top until the new wave of early 2017 flagships hit the market.

But as we've seen time and time again, good hardware does not necessarily lead to excellent performance. In fact, we saw some glaring flaws in some of the most theoretically powerful smartphones of 2016, something that's become a sort of tradition with certain OEMs. Leaving aside the specifics, we know that an OEM's software and the implementation of the hardware at hand can have a tremendous impact in the resulting real-world performance. Thermals, for example, are very important for sustained smartphone usage, and while the Snapdragon 810 is long dead-and-buried (well, almost), we still see some Snapdragon 820 devices heat up quite a bit more than others. That being said, we found the OnePlus 3 in particular to do an excellent job in this regard, so we know that, at the very least, OnePlus learned from the mistakes it made with the OnePlus 2, and that the OnePlus 3 doesn't butcher its meaty hardware through shoddy implementations.

What about real world performance? There are a myriad of factors that affect the resulting speed of the actual user experience, from the heft of the OS and bloatware to the frequency scaling algorithms employed by the OEM. As we've explained in a recent editorial, measuring real-world performance is a hard thing to do, but we can look at the objective causes – code, measurable behavior and design – to get an idea of what makes a phone perform (or appear to perform!) faster. Below we'll explain and demonstrate some of the more curious factors that help the OnePlus 3 and 3T achieve such excellent real-world performance.


Animation Tricks

This first example is a kind of illusion rather than an intricate software-hardware implementation. As many of you know, Animations can convey a strong feeling of speed and fluidity to the user — this is why one of the most popular pieces of advice ever given on XDA and other Android communities is setting the animation speed to x0.5 in the "developer options" menu. Many people swear this makes their devices "much faster", but in reality, the application state itself is loading at the same speed — the information is just displayed quicker, the response time looks shorter. If the activity being loaded or rendered is indeed very simple and takes next to no time to be fully displayed, then this animation speed change is even more effective. The same goes for loading applications from RAM and general in-app navigation, as these settings govern everything from app transitions to in-app animations and the speed of certain UI elements and menus.

 

OEMs understand the importance of animations, with a clear example being HTC and its M8, M9 and HTC 10 devices. The HTC M8 originally surprised users due to its speed and responsiveness — it's true that it employed excellent hardware for the time (that Snapdragon 801 holds up even today), but a not-so-sung-about aspect of this apparent prowess was HTC's use of animations. Not only did they speed up many transitions by default, but they flat-out removed some of them, such as going back to the homescreen. OnePlus does something very similar with the OnePlus 3 and 3T, a neat trick that the company's co-founder Carl Pei is not very shy about in interviews. In order to make the phone appear faster while still having animations that behave like Android proper, they add a subtle fade-out to the homescreen return animation, for example, in order to have it "end" sooner – smoothly and without jarring cuts – while still appearing fluid and very comparable to a Stock Android device.

 

In the first example above, the alpha begins changing shortly after the card begins moving downwards, while remaining visible enough for the user to subconsciously pick-up on the motion. This tricks you into recognizing it as the original Android transition (with a change in vertical speed), but you also see it end sooner as it fades before it reaches the bottom. This animation is most noticeable when lengthening the animations through the aforementioned developer options. The same effect is applied when opening applications, either hot or cold, from the homescreen, although in this instance it is a lot more subtle, although not as confined to the beginning of the animation as seen on the Pixel XL. You can also see that the Pixel XL's window expansion has a deceleration that makes it finish after the OnePlus 3T's, which keeps a linear speed throughout. That last segment of the animation actually costs the Pixel XL a few extra milliseconds, although it arguably looks cleaner and more inline with Material Design guidelines.

CPU Scaling and App Opening Speeds

This one is a curious aspect that I never see brought up when discussing app opening speeds, or general performance for that matter, and it's a shame that it isn't given how interesting it is. When Qualcomm brought up the "faster app launch times, and smoother, more responsive user interactions" featured in the Snapdragon 820 and 821, they didn't specify how this was achieved. In reality, it's due to a pretty clever feature that Qualcomm makes available on the chip for OEMs that purchase Snapdragon 820 and 821 processors, but not all manufacturers decide to implement it or implement it in the same way. Essentially, the OnePlus 3 and OnePlus 3T are able to detect when Android is opening an application, and then quickly scale up and max out the clockspeeds on all cores in a short burst in order to get the fastest opening speed the device can achieve.

 

This is due to an overbearing boost framework Qualcomm offers to OEMs, with some of it being observable CAF sources and part of it being proprietary (which means they couldn't disclose much to me about it) — custom ROM makers can opt to strip this out of their ROMs when building from CAF, as SultanXDA did in favor of his own custom implementation (which is also very clever and works well). According to Qualcomm, there is no public name for this feature, and it's indeed not something that's been widely discussed. OnePlus isn't the only OEM to implement this either, but as said earlier, OEMs can and do use the feature differently. For example, the OnePlus 3 boosts the CPU frequency both when opening application and when loading them from the recents menu but at different maximum frequencies, whereas the Google Pixel boosts both activities at the same peak frequencies. Moreover, app opening is not the only activity "boosted" by Qualcomm's framework: it can also tap into boot processes, scrolling events, and also offers optimizations for a better browsing experience.

 

What's perhaps most interesting is that this "boost mode" is the only way in which the OnePlus 3T can achieve the peak 2.19GHz frequency on the little cluster. OnePlus was very conservative in its official specification sheet, as they rightly state that the OnePlus 3T's little cluster has a peak frequency of 1.6GHz, just like the original OnePlus 3. This much is true for many day-to-day operations, but Qualcomm's boost framework is designed specifically around ramping up the little cluster frequency of the Snapdragon 821-AC to 2.19GHz when launching applications, as confirmed to XDA by Qualcomm. The chipset maker also informed us that the Snapdragon 821-AB (found in the Pixel and Pixel XL) can also access this "boost mode", albeit up to a maximum of 2GHz in the efficiency cluster (by default); interestingly enough, the Pixel XL keeps it conservative as even in this scenario, the peak frequencies are 2.15GHz+1.6GHz.

F2FS with UFS 2.0

Another often-understated contributor to the exceptional real-world performance of 2016 flagships is the kind of storage they implement, and the read and write speeds they achieve. This helps in many operations including (and especially) opening applications, meaning many of the famous app opening tests you find on YouTube have a significant reason to detail not just the processor employed, but the storage type as well. The OnePlus 3 and OnePlus 3T are two of many devices that now employ UFS 2.0 storage, in particular a chip manufactured by Samsung. The Galaxy S6 was the first smartphone to utilize UFS storage, which marked a significant improvement over the previous eMMC solutions. The UFS 2.0 standard has faster theoretical maximums than a typical eMMC 5.1 solution, allows for simultaneous read and write processes, and it also includes new protocols and methods to reduce inefficiencies. UFS also has great performance scalability, uses little power and is optimized for mobile like eMMC. High-resolution video recording and storage-intensive tasks as well as loading heavy applications and games are some of the usage scenarios that see tangible benefits from this storage solution.

efs2-0comparison

Source: Samsung

While many phones today use UFS 2.0 storage (and some even come with UFS 2.1), OnePlus managed to squeeze the most out of the UFS 2.0 chip on their OnePlus 3 by switching to F2FS starting with Android Nougat (and once you reset your device, as the switch requires formatting that would compromise your data). They informally began testing the feature with their Marshmallow community builds, too, and it's one of the reasons why the OnePlus 3T (F2FS by default) had a small performance advantage over the OnePlus 3 in both storage benchmarks and controlled app-opening tests. F2FS (Flash-Friendly File System) is a file system developed by Samsung in 2013 to cater to the specific characteristics of NAND-based storage solutions, specifically for use on Linux-based operating systems. It employs a log-structured file system, which writes all modifications to disk sequentially in a circular buffer structure, and it's faster than the traditional EXT4 standard on flash memory in most cases. XDA users have been experimenting with this for years, by the way, and you too can reformat your cache partition through TWRP if your kernel supports F2FS.

launchf2fs launchext4

Not many OEMs have adopted into F2FS because there are still issues to solve, but some like Motorola have already tried it on their largely-Stock ROMs, making performance all that much sweeter. Furthermore, because of the CPU scaling mentioned above while opening applications, it's ensured that you'll get the most out of the UFS 2.0 storage because it eliminates possible bottlenecks caused by an interactive frequency scaling in the CPU. We took a look at the OnePlus 3 and OnePlus 3T's storage solutions and file systems to clear up some misconceptions, and found that F2FS did indeed make a substantial difference in synthetic benchmarks like AndroBench, but also a noticeable and replicable difference in real-world scenarios such as app and game opening speeds, which we measured using Discomark, gathering large samples and controlling for variables. At the time, it was hard to discern why the OnePlus 3T's performance was slightly superior to the OnePlus 3's (early graphs shown above), but further tests with a reformatted OnePlus 3 showed that, under F2FS, the difference almost disappears regardless of storage capacity, as OnePlus' UFS 2.0 chip didn't increase storage by employing parallel chips.


What have we learned?

The biggest takeaway of this short exploration is the fact that OnePlus managed to achieve superior performance on the OnePlus 3 and 3T (compared to other OEMs) despite the fact that their devices largely employ the same hardware as other flagships. The RAM amount of the OnePlus 3 wasn't properly utilized at launch, and OnePlus is still satisfied with a ro.sys.fw.bg_apps_limit value of 32 (instead of the initial 20), which is still lower than the peak of 60 some more intrepid OEMs chose for their 4GB RAM devices. This puts a cap in the number of applications that can remain open at any given time (keep in mind you can edit this value if you so choose), meaning that if anything, RAM is the one aspect where the OnePlus 3 doesn't use its hardware to the fullest extent.

But as we've shown with the animations example, performance can appear to improve with mere tweaks to the design of the user experience. There are plenty of examples around, but the UI design and animation type or speed choices ultimately make a perceptible difference to the end user; using animations intelligently is not just smoke and mirrors, it's a smart design practice that other companies like Apple have also exploited to great extent in order to have their phones appear better than they are. OnePlus did a pretty good combination of design tricks and cutting-edge software to make the most out of the hardware in many regards, and the result is what I personally understand to be the fastest phone currently available (although the Pixel and Pixel XL certainly trade blows with it when it comes to smoothness and responsiveness). We hope you enjoyed these curious tricks and stay tuned for more dissections in the future!

What neat tricks have you found make your device faster? Share your observations in the comments!

>>> Check Out XDA's OnePlus 3 Forums!



from xda-developers http://ift.tt/2iX8qK5
via IFTTT

No comments:

Post a Comment