
Estou muito impressionado com os resultados do benchmark Apple M1. É um chip muito rápido e poderoso para tarefas importantes do dia a dia, como navegar na web, trabalhar com aplicativos x86 e ferramentas de desenvolvedor. Sim, o ecossistema ainda está subdesenvolvido e pode levar algum tempo, mas o trabalho vale a pena dado o desempenho fenomenal do M1.
O M1 é muito rápido e muitos benchmarks provaram sua eficácia. No entanto, estava curioso para ver o desempenho das linguagens de programação. Portanto, decidi testar o chip nas cargas de trabalho de desenvolvimento mais populares.
Lembre-se de que alguns conjuntos de testes consomem muita memória, outros dependem do desempenho da CPU e algumas tarefas não se beneficiam do processamento de vários núcleos devido à sobrecarga ou à complexidade do uso de multithreading. Isso significa que o M1 pode ter um desempenho melhor do que o Ryzen de desktop com ainda menos núcleos. Mais importante ainda, concentrei-me em testar problemas de desenvolvimento do mundo real, não em testes de produção sintéticos.
Compare os dados brutos aqui .
Nota: A contagem de núcleo de 3900X é inútil para benchmarks que não mostram o desempenho real na produção. Mas os próprios desenvolvedores trabalham na maior parte do tempo em laptops, desktops etc., portanto, esses testes fazem sentido. Claro, o Ryzen 3900X terá um desempenho muito melhor na produção do que o M1 e Intel, principalmente devido ao paralelismo.
Ambiente de teste
- Apple M1: Mac Mini (16 GB de RAM), MacBook Air (8 GB de RAM) / macOS Big Sur 11.0.1 (todos os binários de benchmark são compilados nativamente para chips da Apple).
- Ryzen 3900X: ASRock Rack X570D4I-2T / 16GB DDR4-3200 × 2 / Ubuntu 20.04.1 LTS ( ) — , 3900X Ryzen 5000: . , .
- Intel i7-9750H: MacBook Pro 16" / 16 / macOS Big Sur 11.0.1
- Intel i9-9880H: MacBook Pro 16" / 32 / macOS Big Sur 11.0.1
Java Renaissance
Less is Better
Renaissance é um conjunto de testes JVM moderno, aberto e diversificado destinado a testar compiladores JIT, coletores de lixo, profilers, analisadores e outras ferramentas.
Como o JVM requer muita memória, e a memória é um dos principais gargalos para qualquer aplicativo Java, o desempenho do Apple M1 é impressionante em comparação com o Ryzen 3900X.
Java SciMark 2.0 (NIST)
More is Better
SciMark 2.0 é um benchmark Java para computação científica e numérica. Ele mede o desempenho de vários núcleos e relata uma estimativa resumida em megaflops aproximados (milhões de operações de ponto flutuante por segundo).
Java DaCapo
Quanto menor, melhor o
conjunto de testes DaCapo consiste em um conjunto de aplicativos do mundo real, o uso de memória não trivial opensorsnyh.
Python PyPerformance
Menos é melhor
O projeto PyPerformance deve servir como a fonte de referência oficial para todas as implementações Python. O foco está em benchmarks reais, não em benchmarks sintéticos. Aplicativos completos são usados sempre que possível.
Go (golang.org/x/benchmarks)
Menos é melhor
Observe que neste benchmark, Go usa todos os núcleos.
Go ( golang-benchmarks )
(Unidades de medida: nanossegundos por operação, menos é melhor)
Apple M1 (Mac Mini) | Apple M1 (MacBook Air) | Ryzen 3900X | Intel i7-9750H | |
---|---|---|---|---|
BenchmarkBase64decode-24 | 68,65 | 69,77 | 137,1 | 103 |
BenchmarkBase64regex-24 | 12001 | 12001 | 32803 | 18255 |
BenchmarkNumberRegEx-24 | 7759 | 7931 | 23379 | 12206 |
BenchmarkFulltextRegEx-24 | 6388 | 6388 | 18627 | 10014 |
BenchmarkNumberParse-24 | 48,69 | 50,19 | 66,83 | 58 |
BenchmarkFulltextParse-24 | 726,3 | 726,3 | 933,2 | 839 |
BenchmarkConcatString-24 | 21949 | 22810 | 65498 | 43343 |
BenchmarkConcatBuffer-24 | 4,338 | 4,648 | 6,258 | 6,24 |
BenchmarkConcatBuilder-24 | 2,37 | 3,1 | 2,934 | 3,02 |
BenchmarkContains-24 | 5,007 | 5,204 | 7,467 | 7,94 |
BenchmarkContainsNot-24 | 6,322 | 6,322 | 7,693 | 8,9 |
BenchmarkContainsBytes-24 | 5,33 | 5,511 | 7,5 | 8,49 |
BenchmarkContainsBytesNot-24 | 6,57 | 6,773 | 9,188 | 10,3 |
BenchmarkCompileMatch-24 | 70,66 | 75,09 | 110,1 | 83 |
BenchmarkCompileMatchNot-24 | 31,65 | 32,08 | 62,42 | 42,1 |
BenchmarkMatch-24 | 800,2 | 804,6 | 2376 | 1313 |
BenchmarkMatchNot-24 | 758,1 | 779,3 | 2311 | 1262 |
BenchmarkForMap-24 | 18,89 | 18,92 | 20,37 | 20,6 |
BenchmarkRangeMap-24 | 47,66 | 48,59 | 53,25 | 56,7 |
BenchmarkRangeSlice-24 | 3,446 | 3,47 | 2,022 | 3,4 |
BenchmarkRangeSliceKey-24 | 4,072 | 4,121 | 2,906 | 3,15 |
BenchmarkAdler32-24 | 699 | 719,4 | 644,4 | 700 |
BenchmarkBlake2b256-24 | 2340 | 2415 | 2026 | 1932 |
BenchmarkBlake2b512-24 | 2343 | 2400 | 1985 | 1945 |
BenchmarkBlake3256-24 | 5753 | 5854 | 2489 | 2634 |
BenchmarkMMH3-24 | 374,3 | 383,2 | 294 | 377 |
BenchmarkCRC32-24 | 255,5 | 260,4 | 152,9 | 122 |
BenchmarkFnv128-24 | 4468 | 4502 | 5540 | 4210 |
BenchmarkMD5-24 | 3193 | 3211 | 2464 | 2534 |
BenchmarkSHA1-24 | 900,4 | 910,9 | 1898 | 1961 |
BenchmarkSHA256-24 | 913,5 | 927,6 | 4016 | 4525 |
BenchmarkSHA512-24 | 6999 | 7033 | 2883 | 3249 |
BenchmarkSHA3256-24 | 4213 | 4231 | 5957 | 5878 |
BenchmarkSHA3512-24 | 7329 | 7429 | 10233 | 10394 |
BenchmarkWhirlpool-24 | 32042 | 32624 | 35714 | 39205 |
BenchmarkMapStringKeys-24 | 68,14 | 70,66 | 87,62 | 100 |
BenchmarkMapIntKeys-24 | 43,6 | 48,49 | 42,51 | 60 |
BenchmarkJsonMarshal-24 | 1240 | 1261 | 2258 | 1720 |
BenchmarkJsonUnmarshal-24 | 4969 | 5102 | 9597 | 6484 |
BenchmarkMathInt8-24 | 0,3128 | 0,3235 | 0,2298 | 0,24 |
BenchmarkMathInt32-24 | 0,3145 | 0,3166 | 0,2324 | 0,239 |
BenchmarkMathInt64-24 | 0,3131 | 0,3158 | 0,2367 | 0,237 |
BenchmarkMathAtomicInt32-24 | 6,9 | 6,965 | 4,02 | 4,33 |
BenchmarkMathAtomicInt64-24 | 6.898 | 7.051 | 4.044 | 4,27 |
BenchmarkMathMutexInt-24 | 13,51 | 13,63 | 8,118 | 12,1 |
BenchmarkMathFloat32-24 | 0,3142 | 0,3142 | 0,3142 | 0,241 |
BenchmarkMathFloat64-24 | 0,313 | 0,313 | 0,313 | 0,239 |
BenchmarkParseBool-24 | 1.427 | 1,43 | 0,2252 | 0,308 |
BenchmarkParseInt-24 | 10,97 | 11,15 | 11,84 | 13,5 |
BenchmarkParseFloat-24 | 64,52 | 65,74 | 90,89 | 87 |
BenchmarkMathRand-24 | 13,55 | 13,55 | 17,27 | 21,5 |
BenchmarkCryptoRand-24 | 106,6 | 112 | 1311 | 145 |
BenchmarkCryptoRandString-24 | 107,6 | 110,7 | 222 | 138 |
BenchmarkMatchString-24 | 4957 | 5148 | 13869 | 7616 |
BenchmarkMatchStringCompiled-24 | 475,5 | 496,2 | 499,2 | 464 |
BenchmarkMatchStringGolibs-24 | 479,3 | 496,3 | 491,3 | 480 |
Banco SQLite
Menos é melhor
Redis
Quanto maior melhor
Comparativo de mercado de ferramentas da Web JavaScript (v8)
Bigger is Better
V8 Web Tooling Benchmark é um conjunto de benchmarks para medir cargas de trabalho JavaScript no desenvolvimento da web, como cargas de trabalho básicas em ferramentas populares como Babel e TypeScript. O objetivo é medir especificamente o desempenho do JavaScript (que é afetado pelo mecanismo do JavaScript), não a E / S ou outros aspectos não relacionados.
Para uma descrição detalhada dos testes neste pacote, veja aqui .
JavaScript Octane 2.0
Quanto maior melhor
Webpack Build
Menos é melhor
Projeto de construção de destino: antd-admin .
Conclusão
O desempenho do chip Apple M1 é muito impressionante. Em tarefas reais, ele tem um desempenho melhor do que o x86 atual.