Ich bin sehr beeindruckt von den Apple M1 Benchmark-Ergebnissen. Es ist ein sehr schneller und leistungsstarker Chip für wichtige alltägliche Aufgaben wie das Surfen im Internet, die Arbeit mit x86-Anwendungen und Entwicklertools. Ja, das Ökosystem ist noch unterentwickelt und es kann eine Weile dauern, aber die Arbeit lohnt sich angesichts der phänomenalen Leistung des M1.
Der M1 ist sehr schnell und viele Benchmarks haben seine Wirksamkeit bewiesen. Ich war jedoch neugierig auf die Leistung von Programmiersprachen. Deshalb habe ich mich entschlossen, den Chip in den beliebtesten Entwicklungs-Workloads zu testen.
Beachten Sie, dass einige Testsuiten speicherintensiv sind, andere von der CPU-Leistung abhängen und einige Aufgaben aufgrund des Overheads oder der Komplexität der Verwendung von Multithreading nicht von der Multicore-Verarbeitung profitieren. Dies bedeutet, dass der M1 mit noch weniger Kernen eine bessere Leistung als der Desktop-Ryzen erzielen kann. Am wichtigsten war, dass ich mich auf das Testen realer Entwicklungsprobleme konzentrierte, nicht auf synthetische Produktionstests.
Benchmark-Rohdaten hier .
Hinweis: Die 3900X-Kernanzahl ist für Benchmarks unbrauchbar, die keine tatsächliche Leistung in der Produktion anzeigen. Die Entwickler selbst arbeiten jedoch die meiste Zeit auf Laptops, Desktops usw., sodass solche Tests sinnvoll sind. Natürlich wird der Ryzen 3900X in der Produktion viel besser abschneiden als der M1 und Intel, hauptsächlich aufgrund der Parallelität.
Test Umgebung
- Apple M1: Mac Mini (16 GB RAM), MacBook Air (8 GB RAM) / macOS Big Sur 11.0.1 (alle Benchmark-Binärdateien sind nativ für Apple-Chips kompiliert).
- 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
Weniger ist besser
Renaissance ist eine moderne, offene und abwechslungsreiche JVM-Testsuite zum Testen von JIT-Compilern, Garbage Collectors, Profilern, Analysatoren und anderen Tools.
Da die JVM viel Speicher benötigt und Speicher einer der Hauptengpässe für jede Java-Anwendung ist, ist die Leistung des Apple M1 im Vergleich zum Ryzen 3900X atemberaubend.
Java SciMark 2.0 (NIST)
Mehr ist besser
SciMark 2.0 ist ein Java-Benchmark für wissenschaftliches und numerisches Rechnen. Es misst die Leistung mehrerer Kerne und gibt eine zusammenfassende Schätzung in ungefähren Megaflops an (Millionen von Gleitkommaoperationen pro Sekunde).
Java DaCapo
Je kleiner,
desto besser besteht die Testsuite DaCapo aus einer Reihe realer Anwendungen, die eine nicht triviale Speichernutzung ermöglichen.
Python PyPerformance
Weniger ist besser
Das PyPerformance-Projekt sollte als maßgebliche Benchmark-Quelle für alle Python-Implementierungen dienen. Der Fokus liegt auf echten Benchmarks, nicht auf synthetischen Benchmarks. Wenn möglich, werden vollständige Anwendungen verwendet.
Gehen Sie (golang.org/x/benchmarks)
Weniger ist mehr.
Beachten Sie, dass Go in diesem Benchmark alle Kerne verwendet.
Go ( Golang-Benchmarks )
(MaĂźeinheiten: Nanosekunden pro Operation, weniger ist besser)
| 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 |
SQLite Bank
Weniger ist besser
Redis
Je mehr desto besser
JavaScript Web Tooling Benchmark (v8)
Größer ist besser
V8 Web Tooling Benchmark ist eine Reihe von Benchmarks zum Messen von JavaScript-Workloads in der Webentwicklung, z. B. Kern-Workloads in gängigen Tools wie Babel und TypeScript. Ziel ist es, die JavaScript-Leistung (die von der JavaScript-Engine beeinflusst wird) spezifisch zu messen, nicht die E / A oder andere nicht verwandte Aspekte.
Eine detaillierte Beschreibung der Tests in dieser Suite finden Sie hier .
JavaScript Octane 2.0
Je mehr desto besser
Webpack Build
Weniger ist besser Zielerstellungsprojekt
: antd-admin .
Fazit
Die Leistung des Apple M1-Chips ist sehr beeindruckend. Bei realen Aufgaben ist die Leistung besser als beim aktuellen x86.