Π’ Π½ΠΎΡ‡Π½Ρ‹Ρ… сборках Firefox Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JIT-компиляции

Π’ Π½ΠΎΡ‡Π½Ρ‹Π΅ сборки Firefox Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ JIT-компилятор, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ WarpBuilder. Для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ JIT Π² about:config ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° опция «javascript.options.warp».
ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ WarpBuilder являСтся лишь ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ планируСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π³ΠΎΠ΄Π°.

Новый JIT позволяСт ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript-Π΄Π²ΠΈΠΆΠΊΠ° SpiderMonkey Π·Π° счёт сокращСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ…, отслСТиваСмой Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΈΠΆΠΊΠ°, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (CacheIR), Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² «baseline» ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ Π½ΠΈΡˆΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ JIT-компилятором. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ измСнСния ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ JIT, ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти.

ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ JIT ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ старого JIT IonBuilder, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

  • Π£ΡΠ»ΠΎΠΆΠ½Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ;
  • Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы для ΠΊΠΎΠ΄Π° Baseline/C++;
  • Излишня спСциализация, приводящая ΠΊ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ пСрСкомпиляциям;
  • Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° MIR (Middle-level IR) Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (Π² WarpBuilder основная сборка ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° вынСсСна Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ);
  • Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ расходованиС памяти Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ObjectGroups).

Π’ срСднСм Π² тСстах, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° основС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΏΡ€ΠΈ использовании WarpBuilder Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ускорСниС Π½Π° 5-15%. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ прохоТдСния тСста Speedometer ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ Π½Π° 10%. ВСстированиС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сайтах ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ сокращСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Google Docs Π½Π° 20%, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ SpeedIndex ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»Π° Android Π² Reddit ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΡΡ Π½Π° 13%, pdfpaint стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС Π½Π° 18%. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π² тСстС tp6 снизилось Π½Π° 8%. ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ статистики Π² инструмСнтах для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (devtools perf) Ρ‚Π°ΠΊΠΆΠ΅ продСмонстрировали сниТСниС потрСблСния памяти Π½Π° 8%.

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