Confronto tra i KIT di motori javascript dei moderni browser

0

Capisco che la maggior parte dei browser recenti utilizza la compilazione JIT per eseguire javascript. Quello che non capisco è: quale parte di javascript è JIT - lo script, o il bytecode?

Lasciami spiegare. Da quanto ho capito, V8 prende il tuo JS e lo compila in linguaggio macchina (non bytecode) con l'output inserito nella RAM invece di essere scritto in un file separato sull'unità. Le ottimizzazioni seguono come da requisiti futuri.

Informazioni sul motore Chakra: questo link dice che il codice sorgente viene convertito in bytecode e quindi passato a un'unità di esecuzione bytecode dove viene eseguito tramite un interprete o un compilatore JIT. Quello che non dice è: in che modo il javascript viene convertito in bytecode in primo luogo? È JIT che si è compilato da solo - (ci ha effettivamente dato due nervosismi lavorando da capo a lato) - o è compilato più tradizionalmente? Dove viene posizionato l'output? RAM o qualche posto temporaneo sul disco?

E come funziona SpiderMonkey? Sembra che sia come Chakra / ChakraCore.

Mentre ci siamo, ti piacerebbe spiegare HHVM e php 7 nello stesso contesto? Il bytecode JITed o il codice sorgente JITed? O è entrambi?

    
posta Kraken 31.08.2016 - 22:45
fonte

1 risposta

0

Un file JavaScript (o <script> -elemento) deve essere analizzato e compilato in bytecode nel suo complesso prima dell'esecuzione. Questo perché un'espressione può fare riferimento a dichiarazioni che si verificano successivamente nel file, quindi è necessario analizzare l'intero file prima che l'esecuzione possa iniziare. JIT non è realmente possibile in fase di analisi.

    
risposta data 31.08.2016 - 23:33
fonte

Leggi altre domande sui tag