ARM M1芯片的MacBook搞开发香吗?

Stella981
• 阅读 1779

ARM M1芯片的MacBook搞开发香吗?

程序员的成长之路

互联网/程序员/技术/资料共享 

关注

阅读本文大概需要 10 分钟。

2020年11月11日双11上午,苹果发布了 M1芯片的新款Mac,其最大的变化就是将处理器从Intel换成了 苹果自研的ARM芯片M1

上一次苹果更换Mac芯片要追溯到2006年,14年前,苹果选择从PowerPc转向Intel,事实证明当时的换代给Mac带来了性能的大幅提升,是一次正确的选择。

时隔14年,苹果再一次选择了更换芯片,摆脱了如日中天的x86架构Intel芯片,拥抱移动时代崛起的ARM架构。毕竟,苹果在手机和平板的A系列芯片上投入了太多精力和心血。

本文目录如下:

  • M1芯片给Mac带来了什么

  • 插电源?不存在!

  • 风扇是什么?不需要!

  • IOS应用,大杀器!

  • 其他特点

  • M1芯片软件兼容性测试

  • 编码相关软件

  • 日常使用软件

  • 一些吐槽与不满

  • 我的想法和购买建议

注: 本文基于MBP M1 16+512体验

惊艳之处

如果你问我,使用了M1芯片的MacBook带来的最大改变是什么?

我的回答是,对于我来说,官方强调的性能提升x倍,在平时的开发编码工作中,感受的并不多。

在大多数情况下,我更多是将笔记本作为一个终端来使用,连接各种服务器,调试代码,并不会频繁的在本地打包编译很大的工程代码。

那么,M1抛开软件兼容性问题,用起来是不是和上一代Mac一样?

想要得到这个问题的答案,还需要分开来细说。

笔记本进入Soc时代

以前的大多数笔记本,都是以CPU+内存+显卡+硬盘等形式来支撑你的软件系统,但是M1的到来,将SoC(System on Chip)带入了笔记本。(当然,苹果并不是第一个)

举个不太恰当的例子,以前你的电脑,打开运行一个软件,需要从 硬盘-->主板传输-->内存-->主板传输-->CPU/显卡(算力硬件),而现在,由于所有的数据和算力都整合在了一个Soc里,你的软件从硬盘读取到内存后,直接就在Soc里面实现了数据共享,包括CPU和GPU都可以直接读取到数据,也就是下图所说的的统一内存架构:

ARM M1芯片的MacBook搞开发香吗?

这样做带来的好处就是省去了信号在主板上穿梭带来的延迟和电量浪费,节省了耗电量,降低了信号延迟。

这也解释了为什么很多评测发现一些Intel版本的软件,经过软件转译后运行在M1上居然比跑在Intel的机器上还要快。虽然转译带来了执行效率的降低,但是在数据传输性能上,很多老软件在M1上的运行速度已经吊打Intel。

这其实和索尼PS5一直在宣传的超高速SSD有异曲同工之妙,为什么PS5游戏加载速度快到令人发指,因为索尼把CPU和他的SSD深度定制,在数据传输上整合到了一起,读取游戏自然就快到起飞。

插电源?不存在!

ARM M1芯片的MacBook搞开发香吗?

M1加持下的MacBook Pro官方宣称是 历代最强续航

我自己这几天使用下来,图中的这句宣传语是完全可以相信的,甚至标称的20小时,你都完全可以相信。

我没时间做标准的续航测试,这里提供一组数据吧。

我在一个偏重度场景下不插电源使用Mac(IDEA + Chrome + 后台网易云 + 笔记软件 +微信 来回切换),掉电量如下:

上午10.25 86% ---> 上午11.25 71%  一小时  消耗电量15%

粗略换算下来:偏重度场景下可以使用6.6小时

再模拟一个轻度场景,后台挂微信,前台Chrome外放B站视频

上午10.22 57% ---> 上午11.12 50%  50分钟  消耗电量7%

粗略换算下来:轻度场景下可以使用12小时

如果大家上班只是做做表格写写文字,那么你的电源都不用常年留在办公室,直接留在家里得了,上班不充电,任性!

风扇是什么?不需要!

ARM M1芯片的MacBook搞开发香吗?

这次Pro依然使用了单风扇热管散热的方式,这也是Pro之所以Pro的一点。

但是!

我目前非常郁闷的就是, 这风扇,它根本就不转!

为啥不转,因为M1是苹果的5nm芯片,功耗和英特尔的10nm比起来不是一个级别,之前的Pro放在床上,只要有被子堵住出风口,没过多久风扇就开始呼呼的转,这代芯片实在是,热不起来。

所以现在就是“非常后悔”,我买回来一点也不Pro,分明就是台Air~

我时常的心情如图:

ARM M1芯片的MacBook搞开发香吗?

这一代的芯片散热之强,在我看来是降维打击,目前同样性能的笔记本应该没有对手。

快速唤醒,比快还要快!

之前Mac的休眠唤醒就已经非常快了,但是在M1的加持下,你可以理解为手机的点亮屏幕那么快,真的。

IOS应用,大杀器!

本来想在后面的兼容性一章里,介绍M1芯片是如何完美的运行IOS应用的,但是IOS应用在Mac上运行的表现实在是惊艳,又有趣,忍不住放到前面先说。

这一代由于是ARM架构的芯片,所以支持直接运行IOS应用,只要开发者把自己的应用,允许在Mac上下载的开关打开,用户就可以在Mac的AppStore直接搜索IOS应用,如下图:

ARM M1芯片的MacBook搞开发香吗?

我先下载了个高德试试:

ARM M1芯片的MacBook搞开发香吗?

这感觉,就蛮神奇的!

在笔记本上用高德导航可能比较不实用,那么我们换个实用的,剪映,抖音旗下的剪辑软件,我在手机上经常用,居然也开放了Mac下载。

打开后,可以流畅使用, 并且支持触摸板的滑动手势。这个对于想要在电脑上做小视频剪辑的朋友来说,绝对是福音。

ARM M1芯片的MacBook搞开发香吗?

上图中,可以看到,由于是手机版,拿到的是相册的权限,只能编辑相册里的视频。

ARM M1芯片的MacBook搞开发香吗?

ARM M1芯片的MacBook搞开发香吗?

但是,我发现在Mac里的视频文件,右键居然提示我,可以用剪映打开,正当我高兴的点了一下,结果。。。剪映打开了,文件却没加载进去,而且文件还从桌面消失了。。我也不知道是我不小心操作了什么,还是现在有bug,把我的文件还吞了。(我....)

ARM M1芯片的MacBook搞开发香吗?

当Mac支持了IOS应用后,极大的丰富了软件生态,开发者做多端适配也会变得更加方便了。

这个天下大一统的未来,前途无量。

最新消息:win10据说之后的版本要支持运行原生安卓应用了,看来微软和谷歌切实感受到了危机。

软件兼容性

苹果这次更换了ARM芯片,带来了Intel老软件的兼容问题,因为Intel是复杂指令集,而ARM是精简指令集,本身软件是不能直接支持运行的。

苹果目前给出的软件运行方案是:

  • 原生支持ARM的软件:在M1上可以直接运行

  • 原生不支持ARM的软件:通过苹果官网给的Rosetta2可以把x86应用转译为支持ARM运行的程序

  • Universal软件:软件在开发时就同时支持运行在x86和ARM

为什么叫Rosetta2?

因为Rosetta是当年苹果Mac从PowerPc转为Intel芯片时用来转译的软件,传承啊。

先贴一张我自己的截图,给大家看下目前大部分软件的运行环境,可以看到绝大多数还是转译运行的,Steam游戏是个例外:

ARM M1芯片的MacBook搞开发香吗?

所以当时发布会开完后,大家都普遍担心Rosetta2转译效率的问题,毕竟这样包了一层转译软件,执行效率肯定是要打折扣的。那么实际运行效果如何,下面是我的实际体验。

编程相关软件

首先是工作相关的软件,也就是程序员常用的开发工具。

JDK

在官网下的Oracle最新的JDK8,下载后直接安装,没有遇到问题。

ARM M1芯片的MacBook搞开发香吗?

IDEA/PhpStorm

作为后端开发,JetBrains全家桶至关重要,好在没有问题,成功运行。并且在本地跑了个Java单元测试。

ARM M1芯片的MacBook搞开发香吗?

遇到的问题:JetBrains目前所有的软件都是Intel转译的版本, 操作起来比较卡顿,相比我自己的16G i5的dell笔记本(也就4000-5000档位),流畅度依然有差距。不过JetBrains全家桶的适配会很快完成的。

VSCODE

之前看网上的结论说没法运行,自己下载了官网的,可以运行,并且比较流畅,不过依然是转译的版本。

ARM M1芯片的MacBook搞开发香吗?

Postman

官网下载,直接安装使用,没有任何问题。

ARM M1芯片的MacBook搞开发香吗?

Charles

没有任何问题,运行流畅。

ARM M1芯片的MacBook搞开发香吗?

常用软件

WPS

目前WPS已经可用,并且比较流畅。我不做大型的PPT和WORD,所以重型任务下的表现不得而知。目前仍然是转译的Intel版本。

HomeBrew

非常遗憾,HomeBrew目前不支持ARM芯片,不过是not yet,所以大家期待一下吧。

ARM M1芯片的MacBook搞开发香吗?

Chrome

原生ARM版本已经上线,流畅运行, 并且插件也正常运行使用,就问你怕不怕

ARM M1芯片的MacBook搞开发香吗?

微信

正常运行,比较流畅。

ARM M1芯片的MacBook搞开发香吗?

遇到的问题:使用微信自带的截图工具,截图后黏贴图片到Chrome会有极大概率触发假死,粘贴至别的应用没有问题。猜测不出是微信的问题还是Chrome的问题。

百度网盘

运行流畅,可以使用。

ARM M1芯片的MacBook搞开发香吗?

QQ

流畅运行

ARM M1芯片的MacBook搞开发香吗?

有道云笔记

我平常一直在使用,很关注这个软件的性能。在Mac下这个软件经常卡卡的,这次的新芯片下,也可以运行,性能也差不多,会有卡顿,希望网易重视下。

网易云音乐

流畅运行,并且苹果的喇叭外放效果我要给个赞。

Foxmail

流畅运行

ZOOM

流畅运行

Final Cut Pro

苹果自家亲儿子,能不适配吗?网上也有很多Final Cut ARM版的评测,性能强劲。

ARM M1芯片的MacBook搞开发香吗?

威联通NAS相关软件

QFinder:可以使用,但是有些操作卡顿明显,不知道湾湾的软件是不是代码写的比较拉胯,还是因为该软件和系统交互比较多所以很卡。

游戏

游戏并不是Mac的主力使用场景,笔记本尤其是轻薄本的发热和降频也会让游戏掉帧严重。

然而,然而,这是一台M1芯片的笔记本,他的功耗控制的实在是太棒了,所以我们不务正业一下,来玩一玩Steam游戏。

ARM M1芯片的MacBook搞开发香吗?

我的Steam仓库里游戏不多,我挑选了一个网上评测不太会测试的游戏,城市天际线,这是一款非常吃CPU的游戏,让我们来看看效果:

我没有做对比视频,但是这款游戏放在老款的Pro13寸上,开全高特效是无法游戏的。在M1上,你可以以大概20-40帧的运行速度来游玩。并且,Pro的风扇还是安静的听不见声音,这才是最可怕的,这意味着很可能长时间玩轻量级游戏,都不会降频。就问你怕不怕。

没有你想看的软件,别担心

如果大家还觉得没看到自己想要的软件,这里送大家一个查看M1软件兼容性的网站,可以在上面查找:

https://isapplesiliconready.com/zh

ARM M1芯片的MacBook搞开发香吗?

Mac依然值得吐槽

好了,上面说了这么多有点,我自己读起来我都快变成一个果粉了。接下来就谈谈我对Mac不满意的地方。

MacOS外接显示器字体模糊

这个问题不知道大家有没有发现,在一台不是高分辨率的屏幕上,比如1080P屏幕,如果用Mac外接显示,会出现字体模糊的情况。而Windows笔记本外接则不会出现这种问题!

因为我看Windows的看习惯了,外接MacBook后,感觉屏幕变糊了。

下图是Windows外接1080P显示器的效果:

ARM M1芯片的MacBook搞开发香吗?

下图是MacOS外接1080P显示器的效果:

ARM M1芯片的MacBook搞开发香吗?

不是我手机没对上焦,是确实这么模糊,发虚。

其实原因是苹果在低分屏上并不会开启他自己的HiDPI显示,字体渲染的时候就会发虚。苹果只对自家的显示器以及其它一些2K 4K显示器上面,支持开启HiDPI。

我不清楚苹果是无法在1080P等低分辨率的屏幕上无法正常渲染清晰,还是苹果故意不在低分屏让大家开启HiDPI。

但是,事情总有解决办法,GitHub等地方就有将普通1080P显示器模拟成高分辨率显示器的方法,这样就可以强制开启HiDPI,渲染出来的1080P HiDPI终于才和Windows一样的清晰。。

比如这位大牛的教程:

https://wacky.one/blog/macos-hi-dpi/

我照做之后,成功让我的1080P显示器清晰了。

HiDPI关闭:

ARM M1芯片的MacBook搞开发香吗?

HiDPI开启:

ARM M1芯片的MacBook搞开发香吗?

你以为这就结束了?其实我是那之前的Intel完成的,M1芯片的笔记本,由于显示器描述文件的变更,还不支持!

我在GitHub的一个HiDPI PJ仓库 issue上跟进了PJ进度,仓库作者自己没有买M1笔记本,我们将数据发给了作者,他会帮助分析下,在新系统和M1下如何修改描述文件来伪装为高分辨率屏幕,之后应该会有解决方案。

新款Air和Pro的区别

这也是我要吐槽的地方,这次新款的Air和Pro都是用了M1芯片,Pro相比Air只是多了一个显示核心,一个8颗,一个7颗,且不说性能差距有多大。这种区别显然让Pro不再那么Pro了。

多花了两千块,可能真的是买了个平时不会转的风扇,哈哈哈。

这一代的Air深空灰,和Pro几乎一样的外观和手感,如果让我推荐的话,我可能更推荐大家买Air,尤其是轻度办公用户。

总结

总体来说,MacBook M1的体验非常好,良好的兼容性以及各大公司对于自家软件未来会适配ARM的承诺,让我倍感期待。我也从一个Window玩家向Mac玩家跨越了一大步。

MacBook通过M1芯片,带来的长续航,低功耗,配合Mac原本优秀的屏幕素质,麦克风/喇叭素质,以及MacOS系统足够优秀的体验,足以让人心甘情愿的掏钱。

ARM M1芯片的MacBook搞开发香吗?

购买建议:

  • 如果你是个忠实的Windows用户,但是在工作中需要一个生产力和续航兼备的笔记本,那么更加便宜的M1芯片MacBook绝对是一个可选项。

  • 如果你是个Mac老用户,并且老的Mac已经用了好多年,感觉想换一台新机器,那么不要担心兼容性问题,直接买就是了。

  • 如果你是个Mac老用户,但是Mac是这两年才买的,那么M1并不推荐你现在就换,因为买完后你的体验可能就像是从iPhone10升级iPhone11,iPhone11升级iPhone12那样,拿到手没两天就发现,有点索然无味,毕竟你还是在用它来做相同的事情,外形上也没有质变。(土豪请忽略这一条!)

  • 需要注意的是, 如果你在意MacBook的极端性能,尽管网上大部分评测都证明了ARM版13寸的性能在大部分场景下都已经持平甚至吊打16寸,但是在某些特殊的场景,Intel的16寸依然是领先的,购买前请先确定你的应用场景在ARM上的性能是不是符合你的预期。

好了,这就是本次我的M1使用体验。

写这篇稿子陆陆续续写了5天,每天挤出时间在写,最近这段时间真的是,太忙了。此外,这也是我的一次全新尝试,写一篇数码相关的体验文。

我想和大家分享我在挑选消费品上的一些思考。毕竟,现在是一个消费主义盛行的年代,在买东西方面,一定要有自己的原则和思考,不能被铺天盖地的广告和主播带货牵着鼻子走。 挑选契合自己需求,满足自己使用场景的产品,才是最有性价比的,这样的产品,买回来才会被自己频繁的使用,而不至于后悔和吃灰。每个人都要有一个健康且经过思考总结的消费观。

如果感觉文章对你有帮助的话,可以 点赞,转发,在看这对我是莫大的鼓励和支持!

推荐阅读:

BOSS直聘变BOSS直约:在线招嫖太荒唐

哈哈,用Java打造一个有趣的表情生成器(附源码)

5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「2048」,即可免费获取!!

ARM M1芯片的MacBook搞开发香吗?

微信扫描二维码,关注我的公众号

朕已阅 ARM M1芯片的MacBook搞开发香吗?

本文分享自微信公众号 - 程序员的成长之路(cxydczzl)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
Karen110 Karen110
1年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Stella981 Stella981
1年前
Angular material mat
IconIconNamematiconcode_add\_comment_addcommenticon<maticonadd\_comment</maticon_attach\_file_attachfileicon<maticonattach\_file</maticon_attach\
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
7个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue