shadowfacts.net/site/posts/2022-01-06-m1-max.md

15 KiB
Raw Permalink Blame History

metadata.title = "M1 Max MacBook Pro Review"
metadata.tags = ["computers"]
metadata.date = "2022-01-06 15:37:42 -0400"
metadata.shortDesc = "Apple finally made a truly great laptop."
metadata.slug = "m1-max"

Heres the review, if youre not going to read any farther than the first sentence: this is a damn good computer. I've had my M1 Max MBP (32 GPU cores, 64 GB RAM) for two months now and, aside from the time spent migrating things off my previous computer, its been the only “real” computer Ive used in that time.

Before I get into the details, some context: My previous primary computer was a 16” Intel MacBook Pro (8 cores, 32 GB of memory, and a Radeon 5500M). I got it almost immediately when it came out in the fall of 2019, coming from the original 2012 15” Retina MacBook Pro. When I first got it, it was the best (for definitions of best relating to the specifics I care about, primarily CPU performance) laptop Apple had made. Whats more it was the first laptop to get rid of the accursed butterfly keyboard. I had zero complaints about it when I first got it, and for a good while afterwards.

But then, last winter, shortly after they came out, I used an M1 Mac mini (8-core, 16 GB RAM) for a couple months. For all I'd fawned over the 2019 MBP, the M1 Mac mini (as well as other people's reviews of the corresponding laptops) gave me a newfound disappointment of all of my laptop's shortcomings. Well, most of the issues I had actually stem from one particular shortcoming: the Intel processor. It was by no means a slouch, it was just pitifully constrained by the thermal design of the laptop. Any sustained workload would cause it to drop down to the base clock—though not throttle below, an improvement over previous generations—and leave a good deal of performance on the table (particularly when playing games, with the GPU also dumping heat into the shared cooler). The abysmal battery life and incredible noise and heat that went along with it didn't do anything to help (a laptop whose processor routinely runs at 100°C cannot rightfully be called a laptop). The M1, by contrast, had none of those issues. In addition to having better single-core performance, it was almost comically more power-efficient. At the end of my M1 review, I said that I was incredibly excited to see what the future of the new Mac architecture held, and I was not disappointed.

Hardware

First off, the most important part: SoC performance. This machine handily beats my old laptop in literally everything I do.

I could list a bunch of artificial benchmarks for you oooh and ahhh at, but that's not generally representative of what I actually use it for.

A full release build of Tusker, my iOS app for Mastodon, takes about 94 seconds on my Intel laptop. Its 44% faster on the M1 Max, taking 53 seconds. Debug builds with incremental compilation see a similar improvement. And, as was the case with the M1, where the single-core performance really shines is in reducing the feedback loop between making a code change and being able to see that reflected in the running app.

As with the Mac mini, everything just feels faster. No doubt some of that is a placebo, but not entirely. I can put my old and new laptops side by side and launch the same app, and the Apple Silicon one will appear on screen several seconds sooner. This snappiness extends to within apps too, especially ones using Catalyst which always felt a little bit unresponsive before.

The other incredible improvement Apple Silicon brings is the power and thermal efficiency. Its not quite as miraculous as the M1 Mini, whose fans I could never get to spin up, but its still a vast improvement. I have to be pushing both the CPU and the GPU fairly hard (e.g., by playing a graphically intensive game) in order to get the fans to be audible. Ordinary, CPU-focused workloads dont cause the fans to ramp up and barely make the laptop feel warm. I once accidentally left a script running that was consuming 100% CPU all day because the fans werent there to signal that something was amiss.

Compare that to the Intel MBP whose fans sound like theyre about to take flight if you so much as look at the machine wrong (seriously, the fans spun up to audible levels and the chassis felt burning hot while it was just in target disk mode).

This has big ramifications on the battery front. When I'd be using my Intel laptop on the go and not be expecting to charge for a while, I'd use Turbo Boost Switcher to disable Intel Turbo Boost and limit the CPU clock speed to the base level. This sligtly degrades performance, but substantially improves battery life. The Apple Silicon laptop, by contrast, achieves in normal mode the battery life that the Intel machine did with turbo disabled. If I were to put this into Low Power Mode (which, as I understand it, partly works by limiting processor speed), I don't even know how long it would last.

Display

The display on this computer is great. Having had a high-refresh rate external monitor for several years, my expectation was that the 120Hz support would be the thing Id enjoy the most. But, that hasnt actually been the case. Sure, 120Hz is great, but over the past couple months, Ive been using my laptop undocked more frequently, and what Ive come to really appreciate is the true retina pixel density.

If you dont know, Apple laptops starting with the 2016 MacBook Pro have used non-integer scaling factors. That is, by default they ran at point resolutions which were more than half of the pixel resolution in each dimension. So, a software pixel mapped to some fraction of a hardware pixel, meaning everything had to be imprecisely scaled before actually going to the panel. People have been complaining about this for years, and Id always dismissed it because I never observed the issue. But, in hindsight, thats because the vast majority of my laptop usage was with it docked to an external monitor and peripherals. In that scenario, the laptops builtin display ends up physically far enough away from my eyes that I dont perceive any blurriness. But, since I've been using this laptop more as an actual laptop—bringing the screen a good foot or two closer to my eyes—Ive noticed that text is undeniably crisper.

All that said, 120Hz is of course also great. Scrolling and mousing around and animations all feel smoother, because they are. In particular the trackpad feels even more responsive and natural. And the mini-LED backlight makes HDR content look great. Seriously, if I were watching a movie or something on my computer, Id prefer to watch it on the smaller builtin display than my big external monitor just for the vastly better contrast and black levels. Some people have complained about haloing (when you can see the backlight zone illuminated because theres a small, bright object against a dark background), but Ive never noticed except when deliberately looking for it by moving the cursor around on a black screen.

The one very minor complaint I do have is that ghosting on the display seems noticeably worse than my external monitor. I dont have any way of objectively testing this, but moving the mouse cursor around seems to leave a longer trail. But again, I only actually notice that when I'm looking for it. In normal usage, and even in playing games, it isn't apparent.

And, lastly about the display, lets talk about the notch, since everyone needs to have an opinion on it. The short version is I dont give a crap about it. The longer version is I really do not give a crap about it. Since the first week I had the computer, this is the only time Ive given it any thought. It sits in the middle of the menu bar where nothings visible anyway (helped by having the 16” rather than the 14”, where big menus or many menubar items are more likely to overflow their respective halves), so its never once caused a problem for me.

Hardware Miscellany

MagSafe is wonderful, Im very happy its back. I get a little spark of joy when I walk up to my laptop and I see the little green dot on the connector. I pulled out my old laptop the other day to begin the process of erasing it before it can be sold, and because it had been sitting for so long, the battery was completely dead. I plugged in a USB-C charger and experienced a mild flash of annoyance that I had know way of knowing whether it was delivering power, other than to wait several minutes for the machine to boot up.

While I didnt hate the Touch Bar as much as some people, I never found it to be better than plain old function keys. Nonetheless, Im perfectly happy that its gone. My stupid minor gripe about the Touch Bar was that, when Im using my computer docked with an external monitor and keyboard, the Touch Bar would remain on and active. That doesnt sound so bad, but it becomes an annoyance as I interact with apps and see the software buttons on the Touch Bar changing and flashing in the corner of my eye. The removal of the Touch Bar has dealt with that annoyance and has made absolutely no difference to my productivity when using the laptop on its own, so Im happy.

The hardware changes with this machine can be divided into two categories: Apple Silicon-related and not. The non-Apple Silicon changes by themselves are fairly small, but they represent a marked quality-of-life improvement when just using the computer.

Software

With the M1 Mac mini, I had both ARM-native Homebrew and Intel-under-Rosetta Homebrew installed, in case I needed to install tools from brew that only ran under Rosetta. This time, thats been entirely unnecessary2. The one Rosetta package I installed last time, iPerf, now runs natively. In general, I've had to use Rosetta for far fewer things than I expected (with the notable exception of games), and even when I have, it's been impressively stable and performant.

Games

Video games are where the Apple Silicon software story gets complicated. Gaming on the Mac has always been a tenuous proposition and ARM has added a whole set of fun, new complications.

Heres my rule of thumb for guessing how well a game will run on macOS: If its compiled for ARM or it uses Metal directly (not through a translation layer like OpenGL3 or MoltenVK), itll probably run great. If not, all bets are off. If a games either built for ARM or uses Metal, chances are someone has put at least some effort into getting it to work on Macs, so letting it have the most powerful CPU and GPU thats ever been in a Mac laptop (which come close to being the most powerful in a Mac, period) gives it a really good chance of running well.

Rise of the Tomb Raider and Shadow of the Tomb Raider both run under Rosetta and use Metal and they run shockingly well. Each can manage a fairly consistent 60 FPS at 1440p on high graphical settings. The HDR support in Shadow of the Tomb Raider even worked with the built-in display. It wasnt quite the difference in visual fidelity that I expected, but I was pleasantly surprised it worked at all.

Minecraft runs well, once youve got a JVM installed thats built for ARM and the LWJGL natives swapped out with ones compiled for ARM, since the set Minecraft ships isnt. (These instructions explain how to replace the native libs when using MultiMC4. Though I use the Temurin JDK, not whatever's in Homebrew.)

Cities: Skylines doesnt see much of a graphical difference, but does benefit from the faster CPU. My old laptop cant simulate the most recent city I built at 3x speed without things like vehicle movement appearing noticeably jerky whereas the Apple Silicon one can handle it. That said, I havent spent enough time playing C:S on it to know if the ceiling (that is to say, how much farther I could grow my city before I encountered performance issues) is substantially higher.

I haven't tried many others, but I'm fairly confident that anything that previously ran on macOS and isn't too graphically demanding will run well. That includes games like Hades and Into the Breach.

Software Miscellany

Beyond games, 1Password 6 remains the only app I regularly use that needs Rosetta and it continues to work flawlessly.

Being able to run iOS apps natively is awesome, even if I don't use it terribly often. The iOS app I use most on the Mac is Overcast, my preferred podcast player. It's quite nice to be able to get notifications when new episodes are available right on my computer, rather than having to check my phone, as well as being able to listen without using the web interface.

Electron apps that are compiled for ARM, such as Spotify, are more responsive too. But it's mostly a reflection of the performance/efficiency of Apple Silicon that it's able to compensate for the bloat that is Electron. However, when it comes to Electron/browser-based apps that aren't compiled for ARM (cough Steam cough), things aren't as good. Steam does run and functions properly, but interacting with anything it uses embedded Chromium for (most of the application) is painfully slow and unresponsive.

One of my few complaints about the M1 Mac mini was resolved with the release of macOS Monterey: Apple Silicon Macs can now use DDC commands to control external displays. Not being able to control the of my external monitors was never a huge issue, but it was a persistent inconvenience that Im glad has been resolved.

Conclusion

Overall, this is a fantastic computer. Apple Silicon means it's vastly faster and more efficient than any previous Mac laptop. As with last year, I'm impresed how much software is already native—just a year and a half into the Mac's ARM transition—and how well Rosetta 2 works for software that isn't. Beyond Apple Silicon, this laptop is an upgrade in every single way over the few preceding generations which felt like a big regression. Two laptops ago, I was using the 7.5 year old 2012 Retina MacBook Pro: the first laptop of a new generation of MacBooks. I'm hopeful that with all these long-standing issues resolved, this machine will last a similarly long time.


  1. haha, remember those ↩︎

  2. Ive also largely switched from Homebrew to MacPorts, but thats a blog post for another time. ↩︎

  3. No, OpenGL itself is not a translation layer. But OpenGL on Apple Silicon works by translating everything to Metal. ↩︎

  4. Those only apply for Minecraft versions recent enough to use LWJGL 3. Getting earlier versions running natively is possible, but a fair bit more involved. Perhaps a subject for another time. ↩︎