Cloudflare, Mozilla ΠΈ Facebook Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ BinaryAST для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ JavaScript

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Cloudflare, Mozilla, Facebook ΠΈ Bloomberg ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ BinaryAST для ускорСния доставки ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ JavaScript ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ сайтов Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. BinaryAST выносит Ρ„Π°Π·Ρƒ синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° Π½Π° сторону сСрвСра ΠΈ поставляСт ΡƒΠΆΠ΅ сформированноС абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (AST). ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ BinaryAST Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ сразу ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΡ‚Π°Π΄ΠΈΡŽ компиляции, минуя парсинг исходного ΠΊΠΎΠ΄Π° JavaScript.

Для тСстирования ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° эталонная рСализация, поставляСмая ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ MIT. Для парсинга ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Node.js, Π° ΠΊΠΎΠ΄ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ формирования AST написан Π½Π° языкС Rust. На сторонС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°
BinaryAST ΡƒΠΆΠ΅ доступна Π² Π½ΠΎΡ‡Π½Ρ‹Ρ… сборках Firefox. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π² BinaryAST ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ инструмСнтария ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ сайта, Ρ‚Π°ΠΊ ΠΈ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ скриптов Π²Π½Π΅ΡˆΠ½ΠΈΡ… сайтов Π½Π° сторонС прокси ΠΈΠ»ΠΈ сСти доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Π’ настоящСС врСмя ΡƒΠΆΠ΅ начался процСсс стандартизации BinaryAST Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ECMA TC39, послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ смоТСт ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ вмСстС с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ сТатия ΠΎΡ‚Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ gzip ΠΈ brotli.

Cloudflare, Mozilla ΠΈ Facebook Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ BinaryAST  для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ JavaScript

Cloudflare, Mozilla ΠΈ Facebook Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ BinaryAST  для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ JavaScript

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ JavaScript Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„Π°Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. Π‘ ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ JavaScript Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных сайтах приблиТаСтся ΠΊ 10 Мб (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для LinkedIn — 7.2Мб, Facebook — 7.1Мб, Gmail — 3.9Мб) пСрвичная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° JavaScript вносит ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. Бтадия парсинга Π½Π° сторонС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Ρ‚Π°ΠΊΠΆΠ΅ замСдляСтся ΠΈΠ·-Π·Π° нСвозмоТности ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ построСния AST Π½Π° Π»Π΅Ρ‚Ρƒ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ приходится ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, для получСния Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ для Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… элСмСнтов ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ).

Частично ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· распространСниС ΠΊΠΎΠ΄Π° Π² ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈ сТатом Π²ΠΈΠ΄Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ сгСнСрированного Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°. На соврСмСнных сайтах ΠΊΠΎΠ΄ обновляСтся достаточно часто, поэтому ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ лишь частично Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠ³ Π±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ WebAssembly, Π½ΠΎ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования явной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° JavaScript.

Π”Ρ€ΡƒΠ³ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся доставка Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ скомпилированного Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° вмСсто JavaScript-скриптов, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сторонний Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΅Π³ΠΎ прямая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ€Π°ΡΡΠ»ΠΎΠ΅Π½ΠΈΡŽ Web, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ бСзопасности ΠΈ трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°.

BinaryAST позволяСт Π²ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ модСль Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ доставки ΠΊΠΎΠ΄Π° Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ Π±Π΅Π· измСнСния языка JavaScript. Π Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BinaryAST сопоставим со сТатым ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ JavaScript-ΠΊΠΎΠ΄ΠΎΠΌ, Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π° счёт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°Π·Ρ‹ парсинга исходных тСкстов Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ увСличиваСтся. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ BinaryAST, Π½Π΅ оТидая Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ получСния всСх Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, парсинг Π½Π° сторонС сСрвСра позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΎΡ‚Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прСдставлСния BinaryAST Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ лишний ΠΊΠΎΠ΄, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ парсингС Π½Π° сторонС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° тратится врСмя ΠΊΠ°ΠΊ Π½Π° Ρ€Π°Π·Π±ΠΎΡ€, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ лишнСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ BinaryAST Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ JavaScript Π½Π΅ ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ с исходным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, Π½ΠΎ сСмантичСски эквивалСнтного ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (BinaryAST сохраняСт ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ Π½Π΅ сохраняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ позициях Π² ΠΊΠΎΠ΄Π΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ). ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ стороной ΠΌΠ΅Π΄Π°Π»ΠΈ являСтся появлСниС Π½ΠΎΠ²Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² для Π°Ρ‚Π°ΠΊ, Π½ΠΎ ΠΏΠΎ мнСнию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠ½ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ мСньшС ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², Ρ‚Π°ΠΊΠΈΡ… распространСниС Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°.

ВСсты ΠΊΠΎΠ΄Π° facebook.com ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π±ΠΎΡ€ JavaScript тратится 10-15% рСсурсов CPU ΠΈ Π½Π° парсинг ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для JIT. Π’ Π΄Π²ΠΈΠΆΠΊΠ΅ SpiderMonkey врСмя ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ построСния AST Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 500-800 мс ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ BinaryAST ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ этот ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° 70-90%.
Π’ Ρ†Π΅Π»ΠΎΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° web-Ρ„Π΅ΠΉΠΌΠ²Ρ€ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ BinaryAST врСмя парсинга JavaScript сокращаСтся Π½Π° 3-10% Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π½Π° 90-97% ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° игнорирования Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСстового JavaScript-Π½Π°Π±ΠΎΡ€Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1.2 Мб, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ BinaryAST ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ врСмя Π½Π°Ρ‡Π°Π»Π° запуска с 338 Π΄ΠΎ 314 мс Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ систСмС (Intel i7) ΠΈ с 2019 Π΄ΠΎ 1455 мс Π½Π° мобильном устройствС (HTC One M8).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ