M1 Mac Golang性能压力测试

Stella981
• 阅读 760

测试环境:macbook pro 13,  M1 16G 512G

golang release里没有m1的版本,下载x86和arm版运行提示不可用,arm版直接报错,x86 golang二进制文件运行后一直hang住,没有任何提示。go官方博客中说1.16的版本会支持mac m1,但1.16的正式版是2021年的2月份,预计会提前先放出几版beta测试版。

参考我之前的文章M1 Mac使用原生Go与开发环境 。

M1

我个人习惯使用Vim和vscode做为golang的代码编辑器,在M1下基本无问题,可以用。Goland支持当然也没有问题的。

最让人惊艳的就是散热,首先没有风扇的声音干扰太爽了。😁 就日常开发工作中,相比16寸 mac来说温度着实低些。

性能对比

全网都在鼓吹M1的性能,个人也相当的感兴趣,所以来一波简单粗暴、不可靠的压力测试。由于工作主要是基于golang开发,那么索性就测试github中较热门的benchmark。

下面是 mac m1 跟 mac 2019 16寸 i7的性能对比,分别做了5轮测试,且go test都限制为4个u,取各个平台的多次结果中较为平均的测试输出。压力测试项目用的这个 github.com/cornelk/go-benchmark 。

单单就测试耗时来说,m1是要比intel i7执行的快个14%。其实之前在两个mac上还做过 go_serialization_benchmarks 对比测试,m1耗时依然要比intel i7快12%左右。

Mac M1:

// mac m1

Mac intel i9 16G 2019 15.4寸

go test -bench=. -cpu=4

社区里其他人的测试

下面m1 vs intel的测试结果显得更加专业,文章的总结都表示M1的结果让人惊艳。但像crypto这类高度依赖指令集的代码,intel运行性能还是要高于M1处理器。

https://roland.zone/m1-go-benchmarks/

https://gohugo.io/news/hugo-macos-intel-vs-arm/

总结

Mac M1各方面还真是可以,性能压测数据也相对可观,但还是建议够买需求的朋友再稳稳。毕竟对于程序员来说,Mac是生产工具,而不是让你烦躁的发动机。要么等开发工具完美适配,要么等M2出世。

M1的发热控制的不错,在压测的几十分钟内,M1的发热要比15.4寸低一些。另外,长时间跑CPU密集运算,M1还是会有些降频的。

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

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
Stella981 Stella981
1年前
M1 Mac使用原生Go与开发环境
Go1.16版将正式支持AppleSilicon M1芯片,即arm64架构的Mac操作系统,目前go1.16版版本为beta1,只是会在这个基础上再修修bug,改进文档等。目前有两种方式抢先体验Go1.16:方式一:编译源代码mac上需要确保安装有rosetta2(https://support.apple.com/
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。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
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
6个月前
皕杰报表之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