CSDN 編者按:今年雙十一這一天,蘋果震撼發布了全新的自研 M1 芯片,從發布到入手的這段時間內,無數開發者開啟了探索與嘗鮮模式,近日,PSPDFKit 創始人 Peter Steinberger 在購買了一臺 MacBook Air 16GB M1 版之后,針對 Xcode、Android Studio、Homebrew 等開發者必備的工具及應用程式進行了評測,接下來,我們見一探 M1 帶來的魅力,
英文標題:Apple Silicon M1: A Developer’s Perspective
原文鏈接:https://steipete.com/posts/apple-silicon-m1-a-developer-perspective/
作者:Peter Steinberger,PSPDFKit的創始人,
譯者:彎月
宣告:本文為 Peter Steinberger 原創文章,遵循 CC 4.0 BY-SA 著作權協議,轉載請注明出處及來源,
最近大家都因為蘋果的新 M1 芯片而興奮不已,我也買了一臺 MacBook Air 16GB M1 版,想看看是否能當作主力開發機使用,下面是我在測驗了一個星期之后的報告,
Xcode
Xcode 在 M1 上的運行速度非常快,編譯 PSPDFKit PDF SDK( debug,Arm64 版)幾乎能與加載了目前最快的英特爾芯片的 MacBook Pro 媲美,前者的編譯時間是 8 分 49 秒,后者是 7 分 31 秒,作為比較,我的黑蘋果(Hackintosh,指在非蘋果生產或非蘋果授權生產的普通 x86 架構 PC 上安裝 MacOS 的行為)編譯同樣的專案需要不到 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 ,性能似憾訓可以接受,只要把并行測驗限制在兩個實體以內,否則系統會耗盡記憶體,產生大量頁面交換,導致變慢,
Docker
我們使用 Docker 來自動化網站,以及為 Web 和 Server PDF SDK 加載環境,Docker 發表了一篇博文,承認當前 Docker 無法在 M1 上正常運行,但他們正在努力解決,有一些非常麻煩的方法使用蘋果的 supervisor 來手動運行 Docker 容器,但需要基于 ARM 的容器,
我希望在 2021 年第一季度找到運行基于 ARM 的容器的方法,我們需要一些努力添加 ARM 的支持(一些已經排上了日程),所以這只是一個過渡問題,
虛擬化和 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 的話能緩解這個問題,
Android Studio
IntelliJ 在努力將 JetBrains 運行時移植到蘋果芯片上,目前 IntelliJ 的程式需要通過 Rosetta 2 運行,但通過 Graddle 進行編譯非常慢, Gradle 會在運行時創建代碼,這個行為似乎與 Rosetta 2 的提前轉譯邏輯非常不契合,
我希望大部分問題能在 2021 年第一季度得到解決,但要讓所有 Java 版本能在 ARM 上正常運行還需要很長一段時間,
Homebrew
Homebrew 目前通過 Rosetta 2 運行,只要加上 arch -x86_64 前綴就能正常使用,還可以在 /opt/homebrew 下額外安裝一個 ARM 版的 Homebrew ,因為越來越多的軟體都開始支持ARM,
目前還沒發現問題(而且性能也不錯),最終肯定能原生運行,
應用程式
大多數應用程式都能運行,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 相比還有一定距離,
總結
新的 M1 MacBook 運行速度非常快,性能很優秀,而且很安靜,所以傳言都是有理有據的,不過在軟體方面還有一定差距,特別是舊的 iOS 模擬器非常有問題,
這些都能在軟體層面修復,整個軟體行業都在努力提升體驗,所以等到明年蘋果發布新版 16 寸 MacBook Pro 以及下一代 M 芯片的時候,完全可能將 M1 Mac 作為主力開發機,
隨著時間的推移,M1 會成為我的第二臺筆記本電腦,我依然會使用2.4GHz 16 寸 MacBook Pro 32GB 記憶體的電腦,因為它的運行速度更快,畢竟在有了更好的選擇后,就很難再使用風扇嗡嗡作響的電腦了,
作為開發者,你怎么看?
針對以上的評測,引發不少網友熱議:
評論1
我也是一名開發人員,不過我不使用 VSCode、Java/Gradle 等軟體,我使用 Python 和 Rust 來從事開源專案的開發,
-
我的開源專案中,運行測驗能快很多,這讓我作業起來更舒服,在2017 MacBook Pro i7 上運行測驗大約需要 60 秒,而在 M1 上只需要 15 秒,所以這在編輯運行測驗回圈中是一個巨大的進步,
-
我的 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 平臺,而是擔心其他平臺會被蘋果以某種形控制,如果蘋果嘗試任何出格的事情,我肯定會放棄使用蘋果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232659.html
標籤:其他
上一篇:需求管理6個最佳方法

