V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
letsgotobyebye
V2EX  ›  Apple

我是不是买了假的 M1

  •  
  •   letsgotobyebye · 2023-02-18 22:04:26 +08:00 · 3384 次点击
    这是一个创建于 648 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近海鲜市场入的 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

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

    15 条回复    2023-02-20 13:59:02 +08:00
    Ga2en
        1
    Ga2en  
       2023-02-18 22:43:27 +08:00
    建议对比下你购入的价格和同期的同价位电脑性能。
    letsgotobyebye
        2
    letsgotobyebye  
    OP
       2023-02-18 23:09:45 +08:00
    @Ga2en #1 用了这么多时间,可以肯定不是假货,只是想知道其他人是不是也是这样,因为 M1 在用之前经常看到吹性能的,但是自己实测发现好像并没有那么强
    wuqiangroy
        3
    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
        4
    tcpdump  
       2023-02-18 23:21:43 +08:00
    M 系列主要是续航和剪辑
    my3157
        5
    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
        6
    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
        7
    my3157  
       2023-02-19 00:06:45 +08:00
    @wuqiangroy #3

    102334155
    used time: 199.554292ms
    LUO12826
        8
    LUO12826  
       2023-02-19 00:12:30 +08:00   ❤️ 1
    你这个任务太简单,用不上 M1 的乱序执行性能。M1 之所以能靠 3.2G 的主频打那些 4-5G 主频的 CPU ,很大程度是因为强大的乱序执行。如果一个任务太简单,或者指令间高度依赖,这时候反而是主频高的处理器有优势。 可以看看这个视频
    &ab_channel=AlexZiskind
    LUO12826
        9
    LUO12826  
       2023-02-19 00:13:23 +08:00
    另外,编程语言间比性能,开的优化级别很重要。
    letsgotobyebye
        10
    letsgotobyebye  
    OP
       2023-02-19 00:24:03 +08:00
    @my3157 #5 作假是开玩笑的,只是觉得太慢,有点出乎意料
    letsgotobyebye
        11
    letsgotobyebye  
    OP
       2023-02-19 00:24:28 +08:00
    @LUO12826 #8 原来是这样,谢谢
    lscho
        12
    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
        13
    imaning  
       2023-02-19 17:57:03 +08:00
    另外个优势就是续航太能刚!
    maggch97
        14
    maggch97  
       2023-02-19 19:00:37 +08:00 via Android
    看一下 geekbench 分数就知道了
    Vipcw95
        15
    Vipcw95  
       2023-02-20 13:59:02 +08:00
    m1 不是因为能耗比强吗,性能绝对值也不是特别拉
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1046 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.