Arvutid ei saa tegelikult käivitada koodi, millesse kirjutate JavaScript (või mõni muu keel selles küsimuses). Arvutid saavad käivitada ainult masinkoodi. Masinkood, mida konkreetne arvuti saab käitada, on määratletud protsessoris, mis hakkab neid käske käivitama, ja see võib erinevate protsessorite puhul olla erinev.
Ilmselt masina koodi kirjutamine oli inimestel keeruline teha (kas 125 on käsk lisada või on see 126 või võib-olla 27). Selle probleemi lahendamiseks loodi niinimetatud kokkupanekkeeltena. Need keeled kasutasid käskude jaoks ilmsemaid nimesid (näiteks lisamiseks lisa) ja seega kaotasid vajaduse täpsed masinkoodid meelde jätta. Assambleekeeltel on endiselt konkreetse protsessori ja masinkoodiga üks-ühele seos, mille arvuti need käsud teisendab.
Assambleekeeled tuleb koostada või tõlgendada
Väga varakult mõisteti, et kirjutada on lihtsam keeled oli vaja ja et arvutit saaks kasutada nende tõlkimiseks masinkoodi juhisteks, millest arvuti tegelikult aru saab. Selle tõlkega võiks kasutada kahte lähenemisviisi ja valiti mõlemad variandid (kas ühte või teist kasutatakse sõltuvalt kasutatavast keelest ja kohast, kus seda juhitakse).
Kompileeritud keel on keel, kus pärast programmi kirjutamist sisestate koodi programmi a kaudu koostaja ja see loob programmi masinkoodiversiooni. Kui soovite programmi seejärel käivitada, helistage lihtsalt masinkoodi versioonile. Kui teete programmis muudatusi, peate selle enne muudetud koodi testimist uuesti kompileerima.
Tõlgendatud keel on see, kus juhised teisendatakse teie käimasolevast masina koodiks programmi käivitamise ajal. Tõlgendatud keel saab põhimõtteliselt juhised programmi allikast, teisendab selle masinaks kood, käivitab selle masinkoodi ja haarab seejärel järgmise juhise allikast, et korrata protsess.
Kaks varianti kompileerimisel ja tõlgendamisel
Üks variant kasutab kaheastmelist protsessi. Selle variandi korral kompileeritakse teie programmi allikas mitte otse masinkoodi, vaid selle asemel teisendatakse montaažitaoliseks keeleks, mis on ikkagi konkreetsest sõltumatu protsessor. Kui soovite koodi käivitada, töötleb see kompileeritud koodi protsessorile vastava tõlgi kaudu, et saada sellele protsessorile sobiv masinkood. Sellel lähenemisel on protsessori sõltumatuse säilitamise ajal kompileerimisega palju eeliseid, kuna sama kompileeritud koodi saavad tõlgendada paljud erinevad protsessorid. Java on üks keel, mis seda varianti sageli kasutab.
Teist varianti nimetatakse Just in Time kompilaatoriks (või JIT). Selle lähenemisviisi korral ei käivita te kompilaatorit tegelikult pärast oma koodi kirjutamist. Selle asemel juhtub see koodi käivitamisel automaatselt. Just in Time kompilaatori abil ei tõlgendata koodi avaldusega, vaid see kompileeritakse kõik ühes minge iga kord, kui seda käivitatakse, ja siis saab just loodud kompileeritud versioon jooksma. See lähenemisviis muudab koodi tõlgendamise sarnaseks, välja arvatud see, et vigade asemel leitakse ainult siis, kui avalduses on tõrge on saavutatud, kõik kompilaatori tuvastatud vead põhjustavad selle, et ühtegi koodi ei käivitata, selle asemel, et kogu kood jooksma. PHP on näide keelest, mida kasutatakse tavaliselt just ajaliselt kompileerimisel.
Kas JavaScripti kompileeritakse või tõlgendatakse?
Nüüd teame, mida tõlgendatud kood ja kompileeritud kood tähendavad, millele peame järgmiseks vastama, mida see kõik JavaScriptiga seostab? Sõltuvalt teie JavaScripti käitamise kohast võib koodi kompileerida või tõlgendada või kasutada mõlemat teist mainitud varianti. Enamasti oledJavaScripti käitamine veebibrauseris ja seal tõlgendatakse tavaliselt JavaScripti.
Tõlgendatud keeled on tavaliselt aeglasemad kui koostatud keeled. Sellel on kaks põhjust. Esiteks tuleb tõlgendatavat koodi tõlgendada tegelikult enne selle käivitamist ja teiseks, see on olemas juhtuda iga kord, kui avaldust käivitatakse (mitte ainult iga kord, kui käivitate JavaScripti, vaid ka siis, kui see on sisse lülitatud) a silmus siis tuleb seda iga kord silmuse ümber teha). See tähendab, et JavaScripti kirjutatud kood töötab aeglasemalt kui paljudes teistes keeltes kirjutatud kood.
Kuidas aitab selle teadmine meid seal, kus JavaScript on ainus kasutatav keel kõigis veebibrauserites? Veebibrauserisse sisseehitatud JavaScripti tõlk ise pole JavaScripti kirjutatud. Selle asemel kirjutatakse mõnes muus keeles, mis seejärel koostati. See tähendab, et saate oma JavaScripti kiiremaks käivitada, kui saate kasutada kõiki JavaScripti pakutavaid käske, mis võimaldavad teil ülesande JavaScripti mootorisse laadida.
Näited JavaScripti kiiremaks käitamiseks
Selle näiteks on see, et mõned, kuid mitte kõik brauserid on JavaScripti mootoris juurutanud meetodi document.getElementsByClassName (), teised aga seda veel teinud. Kui vajame seda konkreetset funktsiooni, saame koodi kiiremini käivitada nendes brauserites, kus JavaScripti mootor seda funktsiooni abil pakub jälgides, kas meetod on juba olemas, ja looge oma koodist oma versioon JavaScriptis ainult siis, kui JavaScripti mootor seda ei paku meie. Kui JavaScripti mootor seda funktsiooni pakub, peaks see töötama kiiremini, kui me kasutame seda, mitte JavaScripti kirjutatud oma versiooni. Sama kehtib töötlemise kohta, mille JavaScripti mootor võimaldab meil otse helistada.
Samuti on juhtumeid, kus JavaScripti abil saab sama päringu esitada mitmel viisil. Sellistel juhtudel võib üks teabele juurdepääsu viisidest olla täpsem kui teine. Näiteks document.getElementsByTagName ('table') [0] .tBodies and document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') mõlemad tõmmake veebisaidi esimesest tabelist sama sildikehade nodelist, kuid neist esimene on konkreetne käsk toomiseks keha sildid, kui teine tuvastab, et otsime parameetrilt keha sildid ja muud väärtused saab asendada, et hankida muud parameetrid sildid. Enamikus brauserites töötab koodi lühem ja täpsem variant kiiremini (mõnel juhul ka kood) palju kiiremini) kui teine variant ja seega on mõistlik kasutada lühemaid ja täpsemaid versioon. See teeb ka koodi lugemise ja hooldamise lihtsamaks.
Nüüd on paljudel sellistel juhtudel tegelik töötlemisaja erinevus väga väike ja seda alles siis lisate palju selliseid koodivalikuid, et saate koodil kuluvast ajast märgatava erinevuse jooksma. See on üsna haruldane, kui koodi muutmine selle kiiremaks käitamiseks muudab koodi oluliselt pikemaks või raskemini hooldatavaks ning sageli on tõsi vastupidine. Selle eeliseks on ka JavaScripti mootorite tulevaste versioonide loomine, mis kiirendavad isegi spetsiifilisemat varianti lisaks sellele, et konkreetse variandi kasutamine võib tähendada, et teie kood töötab tulevikus kiiremini, ilma et peaksite midagi muutma.