Benchmarks Apple M1 em desenvolvimento real





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.



All Articles