Benchmarks de Apple M1 en desarrollo real





Estoy muy impresionado con los resultados de la prueba de rendimiento de Apple M1. Es un chip realmente rápido y potente en tareas importantes del día a día como navegar por la web, trabajar con aplicaciones x86 y herramientas de desarrollo. Sí, el ecosistema aún está subdesarrollado y puede llevar un tiempo, pero el trabajo bien vale la pena dado el rendimiento fenomenal del M1.



El M1 es realmente rápido y muchas pruebas han demostrado su eficacia. Sin embargo, tenía curiosidad por ver el rendimiento de los lenguajes de programación. Así que decidí probar el chip en las cargas de trabajo de desarrollo más populares.



Tenga en cuenta que algunos conjuntos de pruebas consumen mucha memoria, otros dependen del rendimiento de la CPU y algunas tareas no se benefician del procesamiento multinúcleo debido a la sobrecarga o la complejidad del uso de subprocesos múltiples. Esto significa que el M1 puede funcionar mejor que el Ryzen de escritorio con incluso menos núcleos. Lo más importante es que me concentré en probar problemas de desarrollo del mundo real, no en pruebas de producción sintéticas.



Compare los datos brutos aquí .



Nota: El recuento de núcleos 3900X es inútil para evaluaciones comparativas que no muestran un rendimiento real en producción. Pero los propios desarrolladores trabajan la mayor parte del tiempo en portátiles, equipos de escritorio, etc., por lo que estas pruebas tienen sentido. Por supuesto, el Ryzen 3900X funcionará mucho mejor en producción que el M1 e Intel, principalmente debido al paralelismo.



Entorno de prueba



  • Apple M1: Mac Mini (16 GB de RAM), MacBook Air (8 GB de RAM) / macOS Big Sur 11.0.1 (todos los archivos binarios de referencia se compilan de forma nativa para los chips de 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 es un conjunto de pruebas JVM moderno, abierto y diversificado destinado a probar compiladores JIT, recolectores de basura, perfiladores, analizadores y otras herramientas.



Dado que la JVM requiere mucha memoria y la memoria es uno de los principales cuellos de botella para cualquier aplicación Java, el rendimiento del Apple M1 es asombroso en comparación con el Ryzen 3900X.



Java SciMark 2.0 (NIST)



Más es mejor







SciMark 2.0 es un punto de referencia de Java para la computación científica y numérica. Mide el rendimiento de varios núcleos e informa una estimación resumida en megaflops aproximados (millones de operaciones de punto flotante por segundo).



Java DaCapo



Cuanto más pequeño, mejor es el







conjunto de pruebas. DaCapo consiste en un conjunto de aplicaciones del mundo real que se abren a un uso de memoria no trivial.



Python PyPerformance



Menos es mejor











El proyecto PyPerformance debería servir como fuente de referencia autorizada para todas las implementaciones de Python. La atención se centra en los puntos de referencia reales, no en los sintéticos. Siempre que sea posible, se utilizan aplicaciones completas.



Ir (golang.org/x/benchmarks)



Menos es más.







Tenga en cuenta que en este punto de referencia, Go utiliza todos los núcleos.



Ir ( golang-benchmarks )



(Unidades de medida: nanosegundos por operación, menos es mejor)



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 es mejor











Redis



Cuanto más grande, mejor







Benchmark de herramientas web de JavaScript (v8)



Más es mejor El







V8 Web Tooling Benchmark es un conjunto de puntos de referencia para medir las cargas de trabajo de JavaScript en el desarrollo web, como las cargas de trabajo centrales en herramientas populares como Babel y TypeScript. El objetivo es medir específicamente el rendimiento de JavaScript (que se ve afectado por el motor de JavaScript), no E / S u otros aspectos no relacionados.



Para obtener una descripción detallada de las pruebas de esta suite, consulte aquí .



JavaScript Octane 2.0



Cuanto más grande, mejor











Compilación del paquete web



Menos es mejor



Proyecto de compilación de destino: antd-admin .







Conclusión



El rendimiento del chip Apple M1 es muy impresionante. En tareas reales, funciona mejor que el x86 actual.



All Articles