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.