2011-10-18 9 views
15

Ho un JavaScript abbastanza grande per la pagina HTML per un dispositivo.compilazione JavaScript Just In Time

Ma è un po 'lento. Ho provato a comprimere i file JavaScript ma non è ancora soddisfacente.

Quindi stavo pensando, è possibile renderlo come un "Just in Time" che viene compilato convertito in codice macchina e usarlo? (Spero che la mia comprensione sia corretta) Uso un browser basato su WebKit.

Per favore chi ha fatto questo, si prega di fornire collegamenti alle pagine "Come" o informazioni sullo stesso.

+8

Un motore JavaScript verrà sempre compilato "just in time"; non puoi servire JavaScript binario o qualcosa del genere. Non dovrebbe mai essere un problema, però. Sei sicuro di non poter implementare il caricamento lento, in modo che il contenuto venga caricato/scaricato solo quando si scorre qualcosa nella vista? – pimvdb

+0

@pimvdb Ora è possibile eseguire il codice asm.js precompilato in tutti i browser moderni utilizzando Emscripten. – niutech

risposta

49

Sia Safari che Chrome fanno già la compilazione JIT di Javascript. In effetti, l'unico browser in uso diffuso che non lo è è IE8 e precedenti. Questo è uno dei motivi principali per cui IE8 è molto più lento della concorrenza in questi giorni.

Ma leggendo tra le righe della tua domanda, la mia ipotesi è che non stai capendo bene quale sia la compilazione JIT. La compilazione JIT avviene sul browser; non è necessario modificare il codice in alcun modo per consentire al browser di eseguire la compilazione JIT su di esso per conto tuo.

Ciò che sembra in realtà è la compilazione bytecode, come ad esempio Java. Questo bytecode è in effetti un linguaggio compilato a metà, che viene quindi compilato da JIT quando si esegue il programma. Se questo è ciò a cui stai pensando, posso confermare che questa non è un'opzione per il codice Javascript basato su browser.

Google sta giocando con una tecnologia chiamata "Native Client" (NaCl), che consente di fornire codice compilato al browser, ma questo non è ancora disponibile tranne nelle versioni di sviluppo di Chrome.

In ogni caso, la compilazione potrebbe rendere il tuo codice più veloce, ma non risolverebbe il problema fondamentale del perché funzioni lentamente, il che è probabilmente una soluzione molto migliore da risolvere. (anche il codice compilato si comporta male se ha dei colli di bottiglia, la compilazione di per sé non rende magicamente migliore il codice lento)

Se si desidera scoprire perché il proprio script è in esecuzione lentamente, si consiglia di utilizzare uno strumento di profilazione, ad esempio quello integrato in Firebug o negli Strumenti per sviluppatori di Chrome. Questo ti aiuterà a identificare le parti del tuo codice che stanno funzionando lentamente.

Si potrebbe anche provare lo strumento , che può anche fornire utili informazioni sulle prestazioni di javascript.

Dichiari inoltre di aver compresso lo script per cercare di farlo andare più veloce. La compressione dello script lo aiuterà a scaricare più veloce (perché è un file più piccolo), ma non farà nulla per la velocità a cui il codice viene eseguito.

Spero che questo aiuti.

+0

@pimvdb - abbastanza giusto; l'ultima volta che ho guardato era in dev, ma Chrome si muove rapidamente, e non stavo tenendo il passo. Tuttavia, è solo in Chrome, e questo non è adatto per l'uso generale sul web. – Spudley

+0

Scusa se stavo confondendo le cose. Sembra che non lo sia ancora. – pimvdb

+0

@Spudley Grazie per aver chiarito la mia comprensione. Come suggerito, ho già iniziato a profilare e scoprire dove ci vuole tempo.Poiché l'applicazione HTML è stata fornita da un altro ente, ci vuole molto tempo ed energia per far sì che cambino il codice. :(Quindi stavo cercando una soluzione rapida Anche a mio avviso, JavaScript utilizza principalmente il confronto delle stringhe per un sacco di cose, quindi stavo facendo il "Comprimi" o usando "Clouser Compiler" per ottimizzare JavaScript. – hari

Problemi correlati