Tolok ukur Apple M1 dalam pengembangan nyata





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.



All Articles