„Facebook“ išleido „Hermes JavaScript“ variklio šaltinio kodą

"Hermes"

„Facebook“ atidarė lengvojo „Hermes JavaScript“ variklio šaltinio kodą, optimizuotas veikti „React Native Framework“ pagrindu veikiančioms programoms „Android“ platformoje.

„Facebook“ programinės įrangos inžinierius Marcas Horowitzas pristatė naują „JavaScript“ variklį 2019 m. „Chain React“ konferencijoje Portlande, Oregone. „Hermes“ yra naujas kūrėjų įrankis, orientuotas į programų paleidimo našumo gerinimą taip pat, kaip „Facebook“ jau daro savo programoms ir kad programos būtų efektyvesnės pradinio lygio išmaniuosiuose telefonuose.

Apie Hermesą

„Hermes“ palaikymas yra integruotas į „React Native“ nuo šios dienos versijos 0.60.2. Projektas yra pripažintas sprendžiant problemas, susijusias su ilgais vietinių „JavaScript“ programų paleidimo laikais ir dideliu išteklių naudojimu. Kodas parašytas C ++ ir platinamas pagal MIT licenciją.

Iš „Hermes“ naudojimo pranašumų sutrumpėja programos pradžios laikas, sumažėja atminties sąnaudos ir sumažėja programos dydis.

Paraiškų spartinimas paleidimas pasiekiama naudojant išankstinį kompiliavimą baitų kode kompaktiškas ir efektyvus kompiliavimo etape.

Norint tiesiogiai paleisti programą, naudojama virtuali mašina su „SemiSpace“ šiukšlių surinkėju, sukurtu kaip projekto dalis. Naudojant V8, ilgiausi yra šaltinio kodo analizavimo ir kompiliavimo veiksmai.

„Hermes“ variklis perkelia šiuos etapus į kompiliavimo etapą ir leidžia pristatyti programas optimizuoto baito kodo pavidalu.

„JavaScript“ apdorojimas yra padalintas į kelis etapus. Iš pradžių šaltinio kodas yra analizuojamas ir generuojamas tarpinis kodo atvaizdavimas („Hermes IR“), pagrįstas SSA pateikimu („Static Unique Assignment“).

Be to, tarpinis atvaizdavimas apdorojamas optimizavimo priemonėje, kuri, naudodama aktyvias statinio optimizavimo metodikas, paverčia pirminį tarpinį kodą efektyvesniu tarpiniu atvaizdavimu, išlaikant pradinės programos semantiką.

Galiausiai paskutiniame etape generuojamas užregistruotos virtualios mašinos baito kodas.

Demonstracijoje Marcas Horowitzas parodė, kad „React Native“ taikymas su „Hermes“ jis buvo visiškai įkeltas maždaug dviem sekundėmis greičiau nei ta pati programa, įkelta be „Hermes“.

Marcas Horowitzas užtikrino, kad „Hermes“ taip pat sumažino APK dydį iki „React Native“ saugomos 41MB programos vidurio ir pašalinta ketvirtadalis programos atminties.

Kitaip tariant, su „Hermes“ kūrėjai gali priversti vartotojus greičiau sąveikauti su programa, kuriai yra mažiau kliūčių, pvz., Lėtas atsisiuntimo laikas ir apribojimai, kuriuos sukelia kelios programos, besidalijančios ribotais atminties ištekliais, pavyzdžiui: Ypač lygių telefonų įvestyje.

Variklis palaiko dalį „ECMAScript 2015 JavaScript“ standarto (visiškas palaikymas yra galutinis tikslas) ir yra suderinamas su daugeliu esamų „React Native“ programų. „Hermes“ buvo nuspręsta nepalaikyti vietos „eval“ (), „su“ išraiškų, atspindžių („Reflect and Proxy“), „Intl API“ ir kai kurių „RegExp“ vėliavų perdavimo.

Norėdami įgalinti „Hermes“ programoje „React Native“, tiesiog pridėkite prie projekto parinktį „enableHermes: true“. Taip pat galima kompiliuoti „Hermes“ CLI sąsajos režimu, kuris leidžia jums vykdyti savavališkus „JavaScript“ failus iš komandinės eilutės.

Tuo pačiu metu „Facebook“ neplanuoja pritaikyti „Hermes“ „Node.js“ ir kitiems sprendimams, daugiausia dėmesio skirdama tik mobiliosioms programoms (AOT kompiliavimas vietoj JIT yra optimalesnis React Native pagrįstų mobiliųjų programų kontekste).

„Microsoft“ atliko išankstinius našumo testus ir parodė, kad naudojant „Hermes“, „Microsoft Office for Android“ programa gali veikti per 1.1 sekundės.

Po paleidimo jis sunaudoja 21.5 MB RAM, o naudojant V8 variklį, paleidus praleidžiama 1.4 sekundės, o atminties sąnaudos yra 30 MB.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.