Photo by Danial Igdery https://unsplash.com/photos/FCHlYvR5gJI

Modern MacBook benchmarks for Android development

Kirill Rozov
ProAndroidDev
Published in
7 min readJan 29, 2022

--

Choosing a device is never easy as it is, but the new Apple Silicon SoCs for Mac have given the market a good shake and made the choice even harder. Which MacBook should I buy? How different are they? It’s hard to figure out. Besides, searching for thorough tests is one hell of a job.

In this article, I’ll give you a proper comparison of build speeds using some real-life Android projects and a number of different MacBook models. In addition to that, I’ll tell you which one to buy heading into 2022.

Test computers

In this test, I used the latest MacBook Pro laptops powered by Intel as well as some of the latest MacBooks with M1.

  1. iMac 27" Late 2015 Intel Core i7 6700K | 24 GM RAM
  2. MacBook Pro 16" 2019 i7 9750H 6 CPU cores/12 threads | 16 GB RAM
  3. MacBook Pro 16" 2019 i9 9880H 8 CPU cores /16 threads | 32 GB RAM
  4. MacBook Air 2020 M1 | 16 GB RAM
  5. MacBook Pro 14" 2021 M1 Pro 8 CPU | 16 GB RAM
  6. MacBook Pro 14" 2021 M1 Pro 10 CPU | 32 GB RAM
  7. MacBook Pro 16" 2021 M1 Pro 10 CPU | 32 GB RAM
  8. MacBook Pro 16" M1 Max | 32 GB RAM

I added my old iMac 27" Late 2015 to the test to see how much progress the new models of Macs made.

Test method

Making sure all computers work in equal conditions isn’t easy, but I’ve tried to make it perfect:

  • Using the latest revision of JDK 11. For Apple Silicon I used Zulu ARM JDK
  • Using Gradle 7.3.3 to build projects (the latest available version in moment of testing)
  • Disconnecting the external displays
  • Connecting all computers to a power source
  • Close as many programs as possible, including the background ones
  • Close Android Studio!
  • Switch computer into performance mode (if available)
  • Placing all laptops on a hard flat surface to let the airflow come in and cool down the laptop
  • Not touching the computers during tests
  • Turning off the Spotlight indexing or adding the test project folder to exceptions.

If you know of any other conditions to be considered before benchmark testing, I’d be happy to read them in the comments below.

I ran the tests using Gradle Profiler in the benchmark mode, which measures the time it takes to build a project. The results you’ll see are the mean values of ten test runs, preceded by two warm-ups builds that didn’t count.

I put all tested projects in repository, and each project has its own test launch scenario (a performance.scenarios file).

Tests

See the exact results in the table below.

TiVi 0.6.3

TiVi is a small TV show tracking app based on trakt.tv.

Kotlin code lines: 15K
Modules: 25

This project is pretty small, but even here, Intel is lagging behind the M1 substantially. M1 Pro/Max left M1 just a second behind. These tests clearly show us one thing: even in a small project like this, you can see that Apple Silicon is a great deal faster than the 9th gen Intel Core 9.

TiVi 0.6.3 benchmark results

ExoPlayer r.2.16.1

ExoPlayer is a popular application-level media player for Android.

Java code lines: 225K
Modules: 35

This next project demonstrates the perks of having numerous high-performance cores in M1 Pro/Max. The results show a significant margin: M1 had a score of 39.4 seconds, while M1 Pro/Max 10 core scored 28 seconds. Meanwhile, the best Intel chip scored 43.9 seconds.

ExoPlayer r.2.16.1 benchmark results

Focus 95.2.0

Focus is a secure, privacy-focused version of the Firefox web browser.

Kotlin code lines: 19K
XML code lines: ~30K.
Modules: 3

Benchmarks for Focus show the already apparent patterns. However, they also show that the M1 Pro 8 core version isn’t significantly behind the full M1 Pro version or the M1 Max.

Focus 95.2.0 benchmark results

Firefox 95.2.0

Firefox is a full version of the Firefox web browser.

Kotlin code lines: ~97K.
XML code lines: ~100K.
Modules: 4

Kotlin code compilation slower compared to Java. Nonetheless, Apple processors demonstrate consistent growth in compilation speed. The only thing is, you still can’t see any difference between the M1 Pro 8-core and 10-core CPUs. What?

Firefox 95.2.0 benchmark results

Signal 5.28.8

Signal is a popular alternative to Telegram.

Java code lines: 248K
Kotlin code lines: 42K
XML code lines: ~270K
Modules: 13

You can finally see that 8 cores in the M1 Pro are slower than the standard version of this processor. Apart from that, it only supports the conclusions drawn from the previous projects.

Signal 5.28.8 benchmark results

Telegram 8.2.1

Telegram Android GitHub is a popular messenger. The code there is quite peculiar: there’s NDK and all the UI is in Java code, there’s no Kotlin and no apt or kapt to generate the code.

Java code lines: 700K
C code lines: 988K
XML code lines: ~40K
Modules: 1

Telegram Android is the largest project I tested, and it clearly shows the difference between the processors. The benchmarks were astounding: it’s the only project I tested where the i7 and i9 in the 2019 version of the MacBook Pro could build a project faster than the Apple M1 in the MacBook Air. Of course, I needed to know why that happened.

Telegram 8.2.1 benchmark results

It turns out, the reason is CMake and the native compilation tools, which are pretty abundant in Telegram. Apple M1 runs compilation using Rosetta 2. As I write, Android NDK doesn’t support Apple Silicon just yet. However, CMake (starting with version 3.19) and other tools already support it. You can read the details here.

So, moving forward, we’ll get a significant boost: Apple M1, at the very least, stands a chance of taking over i7 and (let’s dream wild!) even i9. So, let’s wait for the finished tooling. The test also clearly shows that M1 Pro/Max executes unoptimized software so well that it’s even able to take over the 9th gen i9.

Results of benchmark

Summing up

You can’t write off Intel Core if your project has a lot of native code. Otherwise, there’s no reason to use Intel processors: they get outplayed by even the most basic Apple M1. In time, the tooling will be finished and the pros of having an Apple processor will become even more evident.

MacBook Air with M1 would be enough for the majority of mobile developers. However, I’d recommend buying the one with 16 GB of RAM. That way, you’d be able to build apps for both Android and iOS as well as try out cross-platform development (Kotlin Multiplatform, Flutter). A huge advantage is having no coolers, which makes it quiet but at times pretty hot (whenever a build takes especially long).

If you work on large projects and want maximum capabilities or over 16 GB of RAM, I’d recommend you take a closer look at the MacBook Pro with the M1 Pro 10 core CPU. The 16-inch model will be faster and quieter.

The M1 Max and M1 Pro didn’t show a significant difference in test results. If you’re a developer, it’s only worth buying the Max version if you need the 64 GB of RAM or have needs more than development like video editing or work with 3D graphics. And it’s only worth buying the 16-inch model — the GPU in the 14-inch one has a lower FPS, and the processor will start throttling much sooner and get much louder as it overheats. Also, keep in mind that the 14-inch model has a smaller battery, so even if you don’t do anything complex, its battery life will be shorter compared to the 16-inch model.

M1 vs. Ryzen and 12th Gen Intel

I’d love to go on and compare the compilation performance on top-of-the-line AMD and Intel processors, but there’s no way for me to do that yet. I’ve already run the tests on the Ryzen 5950X with Linux, and it’s remarkably fast! First synthetic benchmarks of I9 12900HK are promising! But that’s a topic for another article…

--

--