AppleM1ベンチマークの結果に非常に感銘を受けました。これは、Webブラウジング、x86アプリケーションの操作、開発者ツールなどの重要な日常業務において、非常に高速で強力なチップです。はい、エコシステムはまだ開発が進んでおらず、時間がかかる場合がありますが、M1の驚異的なパフォーマンスを考えると、この作業は価値があります。
M1は非常に高速で、多くのベンチマークがその有効性を証明しています。しかし、プログラミング言語のパフォーマンスを知りたいと思いました。そこで、最も一般的な開発ワークロードでチップをテストすることにしました。
一部のテストスイートはメモリを大量に消費し、その他はCPUパフォーマンスに依存し、一部のタスクは、マルチスレッドの使用のオーバーヘッドまたは複雑さのためにマルチコア処理の恩恵を受けないことに注意してください。これは、M1がさらに少ないコアでデスクトップRyzenよりも優れたパフォーマンスを発揮できることを意味します。 最も重要なことは、合成生産テストではなく、実際の開発問題のテストに焦点を合わせたことです。
ここで生データをベンチマークし ます。
注:3900Xコア数は、実稼働で実際のパフォーマンスを示さないベンチマークには役に立ちません。しかし、開発者自身がほとんどの場合ラップトップやデスクトップなどで作業するため、このようなテストは理にかなっています。もちろん、Ryzen 3900Xは、主に並列処理により、M1やIntelよりも本番環境ではるかに優れたパフォーマンスを発揮します。
テスト環境
- Apple M1:Mac Mini(16 GB RAM)、MacBook Air(8 GB RAM)/ macOS Big Sur 11.0.1(すべてのベンチマークバイナリは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は、JITコンパイラ、ガベージコレクタ、プロファイラ、アナライザ、およびその他のツールのテストを目的とした、最新のオープンで多様なJVMテストスイートです。
JVMは大量のメモリを必要とし、メモリはJavaアプリケーションの主なボトルネックの1つであるため、AppleM1のパフォーマンスはRyzen3900Xと比較して驚異的です。
Java SciMark 2.0(NIST)
より優れている
SciMark 2.0は、科学的、数値計算のためのJavaベンチマークです。複数のコアのパフォーマンスを測定し、 概算メガフロップ(1秒あたり数百万の浮動小数点演算)で要約推定値を報告します。
Java DaCapo
DaCapoのテストスイートは、小さいほど優れたもの であり、実際のアプリケーションのセットで構成されています。
Python PyPerformance
以下は優れている
ザ・PyPerformanceプロジェクトは全てのPython実装のための正式なベンチマーク源として役立つはずです。焦点は、合成ベンチマークではなく、実際のベンチマークにあります。可能な場合は、完全なアプリケーションが使用されます。
移動(golang.org/x/benchmarks)
以下がより良いのである
。このベンチマークでは、Goはすべてのコアを使用することに注意してください。
Go(golang-benchmarks)
(測定単位:操作あたりのナノ秒、少ないほど良い)
| Apple M1(Mac Mini) | Apple M1(MacBook Air) | ライゼン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ベンチ
少ないほど良い
Redis
大きければ大きいほど良い
JavaScript Webツールベンチマーク(v8)
Bigger is Better
V8 Web Tooling Benchmarkは、BabelやTypeScriptなどの一般的なツールのコアワークロードなど、Web開発のJavaScriptワークロードを測定するための一連のベンチマークです。目標は、I / Oやその他の無関係な側面ではなく、JavaScriptのパフォーマンス(JavaScriptエンジンの影響を受ける)を具体的に測定することです。
このスイートのテストの詳細については、こちらを参照して ください。
JavaScript Octane 2.0
大きければ大きいほど良い
Webpackビルド
以下は、より良いです
:ターゲットのビルドプロジェクト antd管理者。
結論
AppleM1チップのパフォーマンスは非常に印象的です。実際のタスクでは、現在のx86よりもパフォーマンスが向上します。