Apple M1 Benchmarks in der realen Entwicklung





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.



All Articles