Je suis très impressionné par les résultats de référence Apple M1. C'est une puce très rapide et puissante dans les tâches quotidiennes importantes telles que la navigation Web, l'utilisation d'applications x86 et les outils de développement. Oui, l'écosystème est encore sous-développé et cela peut prendre un certain temps, mais le travail en vaut la peine compte tenu des performances phénoménales du M1.
Le M1 est vraiment rapide et de nombreux benchmarks ont prouvé son efficacité. Cependant, j'étais curieux de voir les performances des langages de programmation. J'ai donc décidé de tester la puce dans les charges de travail de développement les plus populaires.
Gardez à l'esprit que certaines suites de tests nécessitent beaucoup de mémoire, d'autres dépendent des performances du processeur et que certaines tâches ne bénéficient pas du traitement multicœur en raison de la surcharge ou de la complexité de l'utilisation du multithreading. Cela signifie que le M1 peut fonctionner mieux que le Ryzen de bureau avec encore moins de cœurs. Plus important encore, je me suis concentré sur les tests de tâches de développement dans le monde réel plutôt que sur les tests de production synthétiques.
Comparez les données brutes ici .
Remarque: le nombre de cœurs 3900X est inutile pour les benchmarks qui ne montrent pas les performances réelles en production. Mais les développeurs eux-mêmes travaillent la plupart du temps sur des ordinateurs portables, des ordinateurs de bureau, etc., donc de tels tests ont du sens. Bien sûr, le Ryzen 3900X fonctionnera bien mieux en production que le M1 et Intel, principalement en raison du parallélisme.
Environnement de test
- Apple M1: Mac Mini (16 Go de RAM), MacBook Air (8 Go de RAM) / macOS Big Sur 11.0.1 (tous les binaires de référence sont compilés nativement pour les puces 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 est une suite de tests JVM moderne, ouverte et diversifiée destinée à tester les compilateurs JIT, les garbage collector, les profileurs, les analyseurs et d'autres outils.
Étant donné que la JVM nécessite beaucoup de mémoire et que la mémoire est l'un des principaux goulots d'étranglement pour toute application Java, les performances de l'Apple M1 sont stupéfiantes par rapport au Ryzen 3900X.
Java SciMark 2.0 (NIST)
More is Better
SciMark 2.0 est une référence Java pour le calcul scientifique et numérique. Il mesure les performances de plusieurs cœurs et rapporte une estimation récapitulative en mégaflops approximatifs (millions d'opérations en virgule flottante par seconde).
Java DaCapo
Plus petite, meilleure est la
suite de tests DaCapo se compose d'un ensemble d'applications du monde réel opensorsnyh utilisation de la mémoire non triviale.
PyPerformance Python
Less is Better
Le projet PyPerformance devrait servir de source de référence faisant autorité pour toutes les implémentations Python. L'accent est mis sur de vrais benchmarks, pas sur des benchmarks synthétiques. Des applications complètes sont utilisées lorsque cela est possible.
Allez (golang.org/x/benchmarks)
Less is Better
Notez que dans ce benchmark, Go utilise tous les cœurs.
Allez ( golang-benchmarks )
(Unités de mesure: nanosecondes par opération, moins c'est mieux)
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 | 11h15 | 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 |
Banc SQLite
Moins c'est mieux
Redis
Le plus gros le meilleur
Benchmark des outils Web JavaScript (v8)
Bigger is Better
V8 Web Tooling Benchmark est une suite de benchmarks pour mesurer les charges de travail JavaScript dans le développement Web, telles que les charges de travail de base dans des outils populaires tels que Babel et TypeScript. L'objectif est de mesurer spécifiquement les performances JavaScript (qui sont affectées par le moteur JavaScript), et non les E / S ou d'autres aspects non liés.
Pour une description détaillée des tests de cette suite, cliquez ici .
JavaScript Octane 2.0
Le plus gros le meilleur
Construction du Webpack
Moins c'est mieux
Projet de build cible: antd-admin .
Conclusion
Les performances de la puce Apple M1 sont très impressionnantes. Dans les tâches réelles, il fonctionne mieux que le x86 actuel.