開發者實測 M1 芯片:除了大型應用程序啓動慢點,整體性能優秀!

來源|CSDN

作者|Peter

譯者|彎月

蘋果新出的M1芯片推出已經有一段時間了,這個讓人興奮的Mac專用芯片對於開發者來說究竟是不是友好?PSPDFKit的創始人、開發者Peter Steinberger購置了一臺新版MacBook Air,從開發者的角度進行了測試。測試結果如何?快來看看吧!‍‍‍

以下爲譯文:

最近大家都因爲蘋果的新 M1 芯片而興奮不已。我也買了一臺 MacBook Air 16GB M1 版,想看看是否能當作主力開發機使用。下面是我在測試了一個星期之後的報告。

01

Xcode

Xcode 在 M1 上的運行速度非常快。編譯 PSPDFKit PDF SDK( debug, arm64 版)幾乎能與加載了目前最快的英特爾芯片的 MacBook Pro 媲美,前者的編譯時間是 8 分 49 秒,後者是 7 分 31 秒。作爲比較,我的黑蘋果編譯同樣的項目需要不到5分鐘。

對於一臺無風扇的機器來說,這已經非常了不起了。蘋果的上一款無風扇 MacBook 是 2017 年的 12 寸版本,用它編譯同一個項目需要 41 分鐘。

絕大多數測試都能通過,儘管我發現了我們之前沒有注意到的一些針對 arm64 的錯誤,因爲我們的 CI 並沒有真正在 arm64 的硬件上運行過測試。模擬器採用與真實設備同樣的架構很有好處,可以幫我們找到更多錯誤。

iOS 14 版以下的測試很有問題。似乎 WebKit 會在某個內存分配的地方崩潰,拋出異常 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) (Apple folks: FB8920323)。性能似乎也非常差,Xcode 經常會停止響應,整個系統變得非常慢,鼠標移動都會斷斷續續的。一些模擬器甚至會在 iOS 14 上出問題,例如 iPad Air (4th gen) 的模擬器依然模擬的是英特爾 CPU ,所以儘量不要使用這些模擬器。

我們非常高興地把 CI 遷移到了 M1 芯片的 Mac Mini 上,就等着 MacStadium 正式支持該設備了,不過我們需要將測試限制在 iOS 14 上,才能正常工作。根據我們目前的計劃,我們打算在 2021 年三季度放棄 iOS 12 的支持,在 2022 年 3 季度放棄 iOS 13 的支持,所以我們需要等待一段時間才能完全遷移到蘋果芯片上。

蘋果有可能會修復這些問題,但我們不應該指望他們修復,畢竟這些問題僅影響舊版本的 iOS ,隨着時間的流逝這些問題就會消失了。

更新:目前我們解決 WebKit 崩潰的問題是通過在運行時檢測 Rosetta2 轉譯,如果發現使用了 WebKit ,就略過測試。這並不完美,但幸好我們的項目中並沒有用到太多 WebKit 。性能似乎還可以接受,只要把並行測試限制在兩個實例以內,否則系統會耗盡內存,產生大量頁面交換,導致變慢。

02

Docker

我們使用 Docker 來自動化網站,以及爲 Web 和 Server PDF SDK 加載環境。Docker 發表了一篇博文,承認當前 Docker 無法在 M1 上正常運行,但他們正在努力解決。有一些非常麻煩的方法使用蘋果的 supervisor 來手動運行 Docker 容器,但需要基於 ARM 的容器。

我希望在 2021 年第一季度找到運行基於 ARM 的容器的方法。我們需要一些努力添加 ARM 的支持(一些已經排上了日程),所以這只是一個過渡問題。

03

虛擬化和 Windows

爲了測試 Windows PDF SDK,大多數人通常都會使用 VMware 虛擬機,安裝 Windows 10 和 Visual Studio 。目前沒有任何 Mac 上的虛擬化程序能支持蘋果芯片,但 VMware 和 Parallels 都在努力解決問題。我認爲 VirtualBox 應該無法在短期內給出解決方案。

我認爲最終我們肯定能通過某種商業工具運行基於 ARM 的 Windows 。目前已經有了許多概念性的驗證,性能似乎非常不錯。微軟目前並沒有基於 ARM 的 Windows ,所以如何獲取授權會是很有意思的問題。

基於 ARM 的 Windows 可以模擬 x86 的應用程序,而微軟正在開發 x64 模擬,目前已經在 Insider 的構建中推出了。幾個月後就應該能在 M1 上通過 Visual Studio 以可以接受的性能測試我們的 Windows SDK 了。

運行舊版本的 macOS 可能問題更大。目前我們的 AppKit PDF SDK 支持 macOS 10.14 ,而 Catalyst PDF SDK 支持 macOS 10.15 ,兩個發佈都需要測試。我們依然需要依賴於 VMware 或 Parallels 是否會包含完整的 x64 模擬層。這模擬層將會非常慢,所以我並沒有太多期待。



最後,16GB 內存並不多。在運行並行測試時,機器會產生大量的頁面交換,導致性能大幅度下降。在運行虛擬機時問題會更嚴重。未來機器如果提供 32GB 的話能緩解這個問題。

04

Android Studio

IntelliJ 在努力將 JetBrains 運行時移植到蘋果芯片上。目前 IntelliJ 的程序需要通過 Rosetta 2 運行,但通過 Graddle 進行編譯非常慢。Gradle 會在運行時創建代碼,這個行爲似乎與 Rosetta 2 的提前轉譯邏輯非常不契合。

我希望大部分問題能在 2021 年第一季度得到解決,但要讓所有 Java 版本能在 ARM 上正常運行還需要很長一段時間。

05

Homebrew

Homebrew 目前通過 Rosetta 2 運行。只要加上 arch -x86_64 前綴就能正常使用。還可以在 /opt/homebrew 下額外安裝一個 ARM 版的 Homebrew ,因爲越來越多的軟件都開始支持ARM。

目前還沒發現問題(而且性能也不錯),最終肯定能原生運行。

06

應用程序

大多數應用程序都能運行,Rosetta 的影響可以忽略不計。大型應用程序的啓動似乎受到了較大的性能影響(例如,Word 需要大約 20 秒才能轉譯完成),但可執行文件會緩存起來,以後的運行速度就會很快。

一小部分應用程序不能轉譯,導致啓動失敗(例如 Beamer,以及 Google Drive 的 “Backup and Sync” 客戶端),但非常罕見。一些應用程序會搞不清楚自己在磁盤上的位置,會提示移動應用程序目錄,但其實只是轉譯後的可執行文件在其他位置執行而已。絕大多數提示可以忽略。一些應用程序(例如 Visual Studio Code )無法進行自動更新,因爲轉譯後的應用程序是隻讀的。但是,就 VS Code 而言,Insider 版本已經支持 ARM ,所以可以正常工作。

基於 Electron 的應用程序在 Rosetta 上運行非常慢。似乎 V8 編譯器會阻止提前轉譯。最新版本的 Electron(版本 11 )已經完全支持蘋果芯片,Slack 等公司已經發布了能夠原生運行的 beta 版本。

Google 剛剛發佈了 ARM 版本的 Chrome ,但與速度飛快的 Safari 相比還有一定距離。

07

總 結

新的 M1 MacBook 運行速度非常快,性能很優秀,而且很安靜,所以傳言都是有理有據的。不過在軟件方面還有一定差距,特別是舊的 iOS 模擬器非常有問題。

這些都能在軟件層面修復,整個軟件行業都在努力提升體驗,所以等到明年蘋果發佈新版 16 寸 MacBook Pro 以及下一代 M 芯片的時候,完全可能將 M1 Mac 作爲主力開發機。

隨着時間的推移,M1 會成爲我的第二臺筆記本電腦,我依然會使用2.4GHz 16 寸 MacBook Pro 32GB 內存的電腦,因爲它的運行速度更快。畢竟在有了更好的選擇後,就很難再使用風扇嗡嗡作響的電腦了。

08

網友評論

評論1:

我也是一名開發人員,不過我不使用 VSCode、Java/Gradle 等軟件,我使用 Python 和 Rust 來從事開源項目的開發。

  1. 我的開源項目中,運行測試能快很多,這讓我工作起來更舒服。在2017 MacBook Pro i7 上運行測試大約需要 60 秒,而在 M1 上只需要 15 秒,所以這在編輯運行測試循環中是一個巨大的進步。

  2. 我的 Rust 項目編譯時間縮短了許多。以前調試版本的編譯加上連接大約需要 3 分鐘,現在只需 40 秒,因此同樣也提高了開發效率。

對於其他項目,如 node/npm ,加速也非常明顯,從源代碼到可發佈對象的流水線也更快。

我開發時使用的 vim 在 Rosetta 上也運行得很好,所以我可以繼續使用我的插件。我用 Docker 並不多,但我會連接到雲上,而不會在本地運行。

我有一臺 16GB 13 寸的 MacBook Pro 。我同意作者的意見,它可以作爲第二臺筆記本,但它幾乎能滿足我的一切要求,而且更快,所以我基本上不再使用舊的 15 寸 MacBook Pro 了。

我一直在使用 16GB 的電腦,所以也許我已經習慣了小內存……我也不會大量使用 Electron 等應用程序,而且由於能夠在 M1 上運行 iPad/iOS 的應用程序,對於 Electron 的需求會更小,因爲像 Authy 等應用程序能啓動更快。

我很期待蘋果芯片的 16 寸 MacBook Pro ,但原因只不過是我希望更大的屏幕。但至少目前來看,M1 芯片的 13 寸 MacBook Pro 已經非常好了。

評論2:

個人意見,我很期待升級版。很高興能看到有人證實 16GB 內存太小。很多人說 16GB 內存足夠,但作爲開發人員,爲了以後考慮,我真希望能有 64GB 內存。我的 MacBook Pro 已有 8 歲高齡了,但依然擁有 16GB 內存。

評論3:

不知道爲什麼這麼多人擔心開發人員會被鎖定到某個系統上。我有很多其他電腦,Linux、BSD 以及 Windows 等到, 所以不太可能被鎖定。我更擔心的是蘋果會控制平臺。並不是說 M1 平臺,而是擔心其他平臺會被蘋果以某種形控制。如果蘋果嘗試任何出格的事情,我肯定會放棄使用蘋果。

‍‍‍英文原文:Apple Silicon M1: A Developer’s Perspective

鏈接:https://steipete.com/posts/apple-silicon-m1-a-developer-perspective/

本文基於 CC BY 4.0 許可協議,由 CSDN 翻譯。

RECOMMEND

“

網易智能有12個不同垂直領域社羣等你來添加智能菌微信:kaiwu_club

”



掃碼瞭解更多



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章