Saya sangat terkesan dengan hasil benchmark Apple M1. Ini adalah chip yang sangat cepat dan kuat dalam tugas-tugas penting sehari-hari seperti penjelajahan web, bekerja dengan aplikasi x86, dan alat pengembang. Ya, ekosistemnya masih terbelakang dan mungkin perlu beberapa saat, tetapi pekerjaan itu sangat berharga mengingat kinerja M1 yang fenomenal.
M1 sangat cepat dan banyak tolok ukur telah membuktikan keefektifannya. Namun, saya penasaran untuk melihat performa bahasa pemrograman. Jadi saya memutuskan untuk menguji chip tersebut dalam beban kerja pengembangan yang paling populer.
Perlu diingat bahwa beberapa rangkaian pengujian membutuhkan banyak memori, yang lain bergantung pada performa CPU, dan beberapa tugas tidak mendapatkan keuntungan dari pemrosesan multicore karena kelebihan atau kerumitan penggunaan multithreading. Ini berarti M1 dapat bekerja lebih baik daripada desktop Ryzen dengan inti yang lebih sedikit. Yang terpenting, saya fokus pada pengujian masalah pengembangan dunia nyata, bukan pengujian produksi sintetis.
Tandai data mentah di sini .
Catatan: Jumlah inti 3900X tidak berguna untuk tolok ukur yang tidak menunjukkan kinerja aktual dalam produksi. Tetapi pengembang itu sendiri bekerja sebagian besar waktu di laptop, desktop, dll., Jadi tes semacam itu masuk akal. Tentu saja, Ryzen 3900X akan berkinerja jauh lebih baik dalam produksi daripada M1 dan Intel, terutama karena paralelisme.
Lingkungan pengujian
- Apple M1: Mac Mini (RAM 16 GB), MacBook Air (RAM 8 GB) / macOS Big Sur 11.0.1 (semua biner patokan dikompilasi secara native untuk chip 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 adalah rangkaian pengujian JVM modern, terbuka, dan beragam yang ditujukan untuk menguji kompiler JIT, pengumpul sampah, profiler, penganalisis, dan alat lainnya.
Karena JVM membutuhkan banyak memori, dan memori adalah salah satu hambatan utama untuk aplikasi Java apa pun, kinerja Apple M1 sangat mengejutkan dibandingkan dengan Ryzen 3900X.
Java SciMark 2.0 (NIST)
More is Better
SciMark 2.0 adalah tolok ukur Java untuk komputasi ilmiah dan numerik. Ini mengukur kinerja beberapa inti dan melaporkan perkiraan ringkasan dalam perkiraan megaflop (jutaan operasi titik mengambang per detik).
Java DaCapo
Semakin kecil, semakin baik
test suite DaCapo terdiri dari satu set aplikasi dunia nyata openorsnyh penggunaan memori nontrivial.
Python PyPerformance
Less is Better
Proyek PyPerformance harus berfungsi sebagai sumber benchmark otoritatif untuk semua implementasi Python. Fokusnya adalah pada tolok ukur nyata, bukan tolok ukur sintetis. Aplikasi lengkap digunakan jika memungkinkan.
Pergi (golang.org/x/benchmarks)
Less is Better
Perhatikan bahwa dalam benchmark ini, Go menggunakan semua core.
Pergi ( golang-benchmark )
(Satuan pengukuran: nanodetik per operasi, lebih sedikit lebih baik)
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 |
Bangku SQLite
Lebih sedikit lebih baik
Redis
Lebih besar lebih baik
Tolok Ukur Alat Web JavaScript (v8)
Bigger is Better
V8 Web Tooling Benchmark adalah serangkaian tolok ukur untuk mengukur beban kerja JavaScript dalam pengembangan web, seperti beban kerja inti pada alat populer seperti Babel dan TypeScript. Sasarannya adalah untuk mengukur kinerja JavaScript secara khusus (yang dipengaruhi oleh mesin JavaScript), bukan I / O atau aspek lain yang tidak terkait.
Untuk penjelasan rinci tentang pengujian dalam rangkaian ini, lihat di sini .
JavaScript Octane 2.0.2 Memperbarui
Lebih besar lebih baik
Pembuatan Webpack
Sedikit lebih baik
Target membangun proyek: antd-admin .
Kesimpulan
Kinerja chip Apple M1 sangat mengesankan. Dalam tugas nyata, kinerjanya lebih baik daripada x86 saat ini.