Бенчмарковете на Apple M1 при използване на различни програмни езици в уеб програмирането

Оригиналът е на Suhun Han

21
1334

Много съм впечатлен от резултатите от тестовете на Apple M1. Това е един наистина бърз и мощен чип, който се проявява много добре при важните ежедневни задачи, при прегледа на всякакви уеб страници, при работата с x86 приложения и с инструментите за разработчиците. Да, тази екосистема все още не е развита и това може да отнеме известно време, но си струва, като се има предвид феноменалната производителност на M1.

М1 е наистина бърз и редица бенчмаркове доказаха неговата ефективност. Но на мен ми бе интересно да проверя каква е производителността на този чип при използването на различни езици за програмиране. Ето защо реших да го тествам с помощта на най-различни популярни алгоритми, които се използват в ежедневното уеб програмиране.

Трябва да се има предвид, че някой от тези тестове натоварват паметта, други зависят от производителността на централния процесор, в някои случаи се проявяват преимуществата от многоядрената работа, а при други реализирането на многонишкова работа е по-трудно. Всичко това означава, че M1 в редица случаи може да покаже по-добър резултат в сравнение с десктоп версиите на Ryzen, дори и при по-малък брой на процесорните ядра. Но най-главното, върху които се фокусирах при тези тестове e, че използвах реални ежедневни задачи, а не синтетични бенчмаркове.

Суровите данни за моите бенчмаркове са представени ето тук.

Забележка: броят на ядрата на 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 GB / macOS Big Sur 11.0.1
  • Intel i9-9880H: MacBook Pro 16″ / 32 GB / macOS Big Sur 11.0.1

Да напомним, че фирменият ARM чип на Apple за Mac се произвежда чрез 5 нанометров технологичен процес и разполага с четири бързи и четири икономични процесорни ядра, осем графични ядра и невронния модул Neural Engine, който има 16 собствени ядра.

Java Renaissance

Колкото са по-малки резултатите, толкова е по-добре

Renaissance е един съвременен, отворен и диверсифициран комплект от тестове за JVM, базира  на тестовете на JIT компилаторите, оптимизаторите, профайлърите, анализаторите и другите подобни инструменти.

Тъй като JVM изисква много памет, а паметта е едно от основните тесни места за всички Java приложения, то производителността на Apple M1 поразява в сравнение с Ryzen 3900X.

Java SciMark 2.0 (NIST)

Колкото повече, толкова по-добре

SciMark 2.0 Java Benchmark е за научни изчисления. Той измерва производителността на няколко изчислителни ядра и показва една обща оценка в приблизителни мегафлопа (милиони операции с плаваща запетая в секунда).

Java DaCapo

Колкото по-малко, толкова по-добре

Комплектът тестове DaCapo е съставен от няколко приложения с отворен код, които масово се използват в реалния живот и използват немалко памет.

Python PyPerformance

Колкото по-малко, толкова по-добре

Проектът PyPerformance е авторитетен източник за бенчмаркове за всички реализации на програмния език Python. Обърнато е основно внимание на реалните, а не на синтетичните тестове. Където е възможно се използват цялостни реални приложения.

Go (golang.org/x/бенчмаркове)

Колкото по-малко, толкова по-добре

Обърнете внимание, че в този бенчмарк, реализиран на програмния език Go, се използват всички ядра.

Go (golang-benchmarks)

Измерванията са наносекунди на операция. Колкото по-малко, толкова по-добре

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 Bench

Колкото по-малко, толкова по-добре

Redis

Колкото повече, толкова по-добре

JavaScript Web Tooling Benchmark (v8)

Колкото повече, толкова по-добре

V8 Web Tooling Benchmark е комплект от тестове за измерване на JavaScript работните натоварвания при уеб програмирането, като например работното натоварване в популярните софтуерни инструменти от рода на Babel и TypeScript.. Целта е да се измери конкретната производителност на JavaScript, на която по-голямо влияние оказва JavaScript енджина, а не входно/изходните операции и някои други аспекти.

Ето тук е дадено подробното описание на тестовете в този комплект.

JavaScript Octane 2.0

Колкото повече, толкова по-добре

Webpack Build

Колкото по-малко, толкова по-добре

Целевият проект на компилацията: antd-admin.

Извод

Производителността на чипа Apple M1 впечатлява изключително много. В реалните задачи по уеб програмиране той се представя по-добре от сегашните x86 чипове. Ненапразно с всеки изминал ден излизат все повече обикновени и професионални приложения с нативната поддръжка на процесорните инструкции на чипа Apple М1.

5 1 глас
Оценете статията
Абонирай се
Извести ме за
guest
21 Коментара
стари
нови оценка
Отзиви
Всички коментари