Google vervangt compiler in Chromium door Maglev – Computer – Nieuws

Nee, juist niet!

De truc hier is dat Javascript een taal is met dynamische typen. Dit zorgt ervoor dat je iets als “functie keertwee(x) { return x + x }” kan schrijven. Als je dat aanroept met het nummer 2, krijg je 4 terug. Maar als je het aanroept met het woord “hoi”, krijg je “hoihoi” terug! Het werkt dus op alle soorten vervolg, zolang er maar een “+” voor het argument bestaat.
En het heeft óók nog eens “zwakke” types, waardoor “function plustwee(x) { x + 2 }” bij het aanroepen met het woord “123” het woord “1232” terug geeft, want het zet dynamisch het nummer om naar een woord, zodat het de twee woorden aan elkaar kan plakken.

Hierdoor is de taal niet direct om te zetten naar machinecode, want er is meer dan één optie mogelijk. De oplossing is om het te ontspannen: hieronder lees je de code regel voor regel uit, kijk je wat de typen van alle variabelen zijn, en voer je de secundaire machinecode voor die regel uit. Dit werkt heel goed en is vrij eenvoudig te implementeren, maar het is vrij langzaam. En dat moet je elke keer doen, willen de typen kunnen bij de volgende aanroep compleet anders zijn.

De oplossing is om het “Just-in-time” te compileren. Waar je bij wat de typen van de variabelen zijn bij elke oproep, en als je ziet dat een bepaalde vaak voorkomende combinatie voorkomt, genereer je een gespecialiseerd blok machinecode. Dit blok machinecode uitvoeren is een ondergeschikt stuk sneller dan het verplaatsen omdat je alle typecontroles binnen dat blok weg kan laten, en je hoeft alleen maar bij het aanroepen van het blok te kijken naar de typen kloppen, of dat je terug moet vallen op verwerking. In de lus van de tijd zal dus al je code worden omgezet naar machinecode, maar dat kan best wel een tijdje duren.

Hoe sneller de JIT-compiler kan achterhalen wat de typen zijn, hoe eerder de gespecialiseerde machinecode erin kan worden gezet – die efficiënter is en dus minder CPU-cycli nodig heeft om uit te voeren.

[Reactie gewijzigd door laurxp op 6 juni 2023 10:14]

credit :Source link

We will be happy to hear your thoughts

Leave a reply

12game.shop
Logo