苹果新出的M1芯片推出已经有一段时间了,这个让人兴奋的Mac专用芯片对于开发者来说究竟是不是友好?PSPDFKit的创始人、开发者Peter Steinberger购置了一台新版MacBook Air,从开发者的角度进行了测试。测试结果如何?快来看看吧!

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

作者:Peter Steinberger,PSPDFKit 创始人

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

本文基于 CC BY 4.0 许可协议,由 CSDN 翻译。‍‍‍

译者 | 弯月,责编 | 郑丽媛

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

最近大家都因为苹果的新 M1 芯片而兴奋不已。我也买了一台 MacBook Air 16GB M1 版,想看看是否能当作主力开发机使用。下面是我在测试了一个星期之后的报告。

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 。性能似乎还可以接受,只要把并行测试限制在两个实例以内,否则系统会耗尽内存,产生大量页面交换,导致变慢。

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 来从事开源项目的开发。

  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 平台,而是担心其他平台会被苹果以某种形控制。如果苹果尝试任何出格的事情,我肯定会放弃使用苹果。

更多精彩推荐☞中台“不火”了,企业数智转型如何破圈?
☞AWS 聘用 Rust 编译器联合创始人,大企为何都爱 Rust?
☞CSDN星城大巡礼,长沙“科技之星”年度企业评选正式开启
☞做数据中心,腾讯是认真的
☞首次公开!阿里巴巴云原生实时数仓核心技术揭秘
☞升级版“绝悟”AI自带“军师”,解禁王者荣耀全英雄池
☞一文告诉你雾计算与云计算的区别及对物联网的价值!
点分享点点赞点在看

开发者实测 M1 芯片报告:除了大型应用程序启动慢点,整体性能优秀!相关推荐

  1. 后端开发者的M1芯片电脑开发环境搭建

    目录 1. JDK 2. IDEA 导入IDEA配置 3. 安装git 4. homebrew 5. 数据库连接工具TablePlus 6. 虚拟机 7. 截图工具iShot 8. 图床工具ipic ...

  2. 教你解决M1芯片MAC安装PS2021卡在启动屏幕,完美解决PS21卡启动屏幕

    自从最近M1芯片的版本更新和PS更新,我们M1用户终于可以在M1芯片上安装PS2020以上的完美激活版本了!但是,可能很多小伙伴下载的M1芯片Mac安装PS2020和PS2021的安装包第一时间都安装 ...

  3. Docker、CentOS 8遭弃用,GPT-3、M1芯片撼动技术圈,盘点2020影响开发者的十大事件!

    前事不忘,后事之师. 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 2020,实"鼠"不易的一年,在众人对"牛"气冲天的期盼之下,正式结束! 这 ...

  4. Docker、CentOS 8遭弃用,GPT-3、M1芯片撼动技术圈,盘点2020影响开发者的十大事件!...

    前事不忘,后事之师. 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 2020,实"鼠"不易的一年,在众人对"牛"气冲天的期盼之下,正式结束! 这 ...

  5. 新MAC苹果M1芯片简要分析(是不是地表最强呢??)

    苹果M1芯片 出众的性能,极其优秀的能耗比 强大的软硬件生态助力 总结与展望 在刚刚举行的苹果秋季活动中,苹果对旗下的Mac产品线进行了更新,发布了全新. Pro 13以及Mac mini,三款产品的 ...

  6. 杂记-Macbook Pro M1芯片能玩深度学习吗?

    介绍 苹果公司在2020年11月的产品发布会中展示了有史以来第一款基于Apple自研M系列处理器的Apple三款新Mac,包括新的M1 MacBook Air,M1 MacBook Pro和M1 Ma ...

  7. M1 芯片版 Mac 抹掉重装系统教程

    M1 芯片版 Mac 抹掉重装系统教程 最新的Apple M1芯片版Mac如果使用抹掉硬盘再重装时,无法通过mac的恢复功能进行重装,无法再进入系统,也可能提示系"准备更新时出错.未能个性化 ...

  8. Apple M1芯片版Mac系统重装教程

    最新的Apple M1芯片版Mac如果使用抹掉硬盘再重装时,无法通过mac的恢复功能进行重装,无法再进入系统,也可能提示系"准备更新时出错.未能个性化软件更新.请再试一次.". 下 ...

  9. M1芯片Mac运行RN报错building for iOS Simulator, but linking in object file built for iOS

    报错信息: 项目场景: 新款M1芯片的Macbook Pro中运行React Native项目,最新版本的. node v15.x cocoapods 1.10.x 问题描述: 一开始React Na ...

最新文章

  1. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二
  2. Hotmail 开始支持完全 HTTPS 加密以增强安全性
  3. 科大星云诗社动态20201118
  4. oshi.systeminfo 获取cpu的数量_智能IC/CPU卡梯控系统的功能优势
  5. C++位操作确定一个数是否为2的幂的算法实现(附完整源码)
  6. XCTF-Web-高手区-easytornado
  7. 组合数据类型,英文词频统计
  8. 码农の带娃绝技:TensorFlow+传感器,200美元自制猜拳手套
  9. eq相等 ne、neq不相等 EL表达式
  10. 【操作系统】SPOOLing技术(外部设备联机并行操作/假脱机技术)
  11. quotes 整站数据爬取存mongo
  12. r语言html函数,【R语言】《R语言初学者指南》:函数、自定义函数、循环
  13. 工具类App原型制作分享-WizNote
  14. 简道云-第3章-表单
  15. ios13怎么打开科学计算机,教你iOS13怎么投屏到Win10上
  16. 电压调整率和负载调整率 简单易懂
  17. 纽迪瑞科技入选快公司FastCompany最具创新力榜单:科技与制造TOP30
  18. 苹果6性能测试软件,5款iPhone升级iOS13.6性能测试:运行速度有所提升?
  19. Android四大组件-Boardcast
  20. Mac中的文件如何拷贝到硬盘中?

热门文章

  1. leetcode 387. 字符串中的第一个唯一字符(First Unique Character in a String)
  2. 路由的跳转 , 动态路由的配置
  3. 浅谈css3长度单位rem,以及移动端布局技巧
  4. 使用ajax的时候必须要加的几行代码
  5. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·002【SQL介绍、数据库的CRUD操作(DDL语句)】
  6. [动态规划] leetcode 10 正则表达式匹配
  7. python中线程里面多线程_Python中的线程和多线程是什么
  8. 关于transformer是如何处理图像的
  9. linux usb设备名 ks,在Linux系统里识别USB设备名字的4种方法
  10. rust笔记9 错误处理