我是不是买了假的 M1

2023-02-18 22:04:26 +08:00
 letsgotobyebye

最近海鲜市场入的 2020 M1 ,12 月激活的

这两天在看关于 webassembly 的内容的时候,up 主认为 web assembly 的性能在计算密集型任务上是有优势的(实际上是这样),再加上之前想去了解一下 Blazor ,所以在测试 blazor 的时候就发现了以下现象:

同样的递归计算斐波那契数列 40 层 blazor:1192ms

然后发现不对劲,我在 win 上随便打开一个浏览器直接用 js 执行是 1278ms +-50 ,windows 中使用.net 甚至更短,只需要 1049ms...而且还是 i3

代码很简单,基本都是一个 fib 方法 int fib(int n) { return n < 2? n : fib(n-1) + fib(n-2);} 然后直接调用 fib(40); 计算一下前后时间差

于是又测试了其他的语言: c:908ms gcc (Apple clang version 14.0.0 (clang-1400.0.29.202))

java:421ms(???java 最快我是没想到的) openjdk version "17.0.6" 2023-01-17

dotnet :1632ms .netsdk version : 7.0.102

原生 js: 1523ms

所以到底是我的电脑的问题还是?

3185 次点击
所在节点    Apple
15 条回复
Ga2en
2023-02-18 22:43:27 +08:00
建议对比下你购入的价格和同期的同价位电脑性能。
letsgotobyebye
2023-02-18 23:09:45 +08:00
@Ga2en #1 用了这么多时间,可以肯定不是假货,只是想知道其他人是不是也是这样,因为 M1 在用之前经常看到吹性能的,但是自己实测发现好像并没有那么强
wuqiangroy
2023-02-18 23:20:13 +08:00
m1 用 golang 跑了一下:
go run fib.go
102334155
used time: 218.433792ms
代码:
fib.go
```golang
package main

import (
"fmt"
"time"
)

func fib(a int) int {
if a <= 2 {
return 1
}
return fib(a-1) + fib(a-2)
}

func main() {
t := time.Now()
fmt.Println(fib(40))
fmt.Printf("used time: %s\n", time.Now().Sub(t))
}
```
tcpdump
2023-02-18 23:21:43 +08:00
M 系列主要是续航和剪辑
my3157
2023-02-19 00:04:35 +08:00
CPU 怎么作假

M 系列对比下来性能提升还是比较明显的, 下述是一个基于 BitMap 的 SDS 存储空间分配器的 benchmark 数据
MBP 2017 i7 7820HQ 16/512G:
action: alloc, capacity: 3906250000, spend: 186 s, latency: 47 ns
MBP 2023 M2 Max 64G/1T
action: alloc, capacity: 3906250000, spend: 54 s, latency: 13 ns
MrKrabs
2023-02-19 00:05:17 +08:00
swift
time ./fib
102334155

________________________________________________________
Executed in 348.64 millis fish external
usr time 344.09 millis 0.07 millis 344.02 millis
sys time 4.04 millis 1.05 millis 2.98 millis


func fib(_ n: Int) -> Int {
n < 2 ? n : fib(n-1) &+ fib(n-2)
}

print(fib(40))
my3157
2023-02-19 00:06:45 +08:00
@wuqiangroy #3

102334155
used time: 199.554292ms
LUO12826
2023-02-19 00:12:30 +08:00
你这个任务太简单,用不上 M1 的乱序执行性能。M1 之所以能靠 3.2G 的主频打那些 4-5G 主频的 CPU ,很大程度是因为强大的乱序执行。如果一个任务太简单,或者指令间高度依赖,这时候反而是主频高的处理器有优势。 可以看看这个视频 <amp-youtube data-videoid="3jU11l9xE6k" layout="responsive" width="480" height="270"></amp-youtube>&ab_channel=AlexZiskind
LUO12826
2023-02-19 00:13:23 +08:00
另外,编程语言间比性能,开的优化级别很重要。
letsgotobyebye
2023-02-19 00:24:03 +08:00
@my3157 #5 作假是开玩笑的,只是觉得太慢,有点出乎意料
letsgotobyebye
2023-02-19 00:24:28 +08:00
@LUO12826 #8 原来是这样,谢谢
lscho
2023-02-19 10:59:45 +08:00
你把 m1 也当成 i3 就理解了,还是移动端 i3

个人理解的产品线就是 m1=移动端 i3 m1pro=移动端 i5. m1max=移动端 i7 m1u=移动端 i9

大家觉得 m1 强是当初预期比较低,用 arm 打赢了同水平的 x86 ,但不代表它能越级打桌面级 x86 。
imaning
2023-02-19 17:57:03 +08:00
另外个优势就是续航太能刚!
maggch97
2023-02-19 19:00:37 +08:00
看一下 geekbench 分数就知道了
Vipcw95
2023-02-20 13:59:02 +08:00
m1 不是因为能耗比强吗,性能绝对值也不是特别拉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX