2013-10-29 13 views
15

di combinare tutti i moduli in una singola risorsa, abbiamo scritto ogni modulo in un tag script separato e nascosto il codice all'interno di un blocco di commento (/ * * /). Quando la risorsa viene caricata per la prima volta, nessuno del codice viene analizzato poiché viene commentato. Per caricare un modulo, trova l'elemento DOM per il tag script corrispondente, elimina il blocco dei commenti ed eval() il codice ....Vale ancora la pena di utilizzare eval per le prestazioni su JavaScript per dispositivi mobili?

Su un dispositivo iPhone 2.2, 200k di JavaScript contenuti in un commento di blocco aggiunge 240 ms durante il caricamento della pagina, mentre 200k di JavaScript analizzati durante il caricamento della pagina hanno aggiunto 2600 ms. Questo è più di una riduzione 10x di latenza di avvio, eliminando 200k di JavaScript non necessari durante il caricamento della pagina!

http://googlecode.blogspot.co.uk/2009/09/gmail-for-mobile-html5-series-reducing.html https://developers.google.com/speed/docs/best-practices/mobile

L'articolo gmail è più di tre anni e c'è stata grandi vantaggi in termini di prestazioni mobili, da allora, vale a dire le cose come Nitro di iOS e JIT venire a mobile. I guadagni prestazionali sono ancora dovuti all'utilizzo di eval?

+6

Se si scrive un'applicazione sulla scala di gmail allora sì, trucchi come questo può essere molto efficace. Ma se la vostra applicazione non ha quel tipo di dimensione del codice, o non fa uso di moduli pigri-caricato poi vorrei mettere in guardia a diffidare: suggerimenti come questo non sono sempre universalmente efficace, e in alcuni casi hanno in realtà il contrario effetto sulle prestazioni se usato in modo inappropriato. Se hai intenzione di fare questo genere di cose l'unico consiglio sensato è di confrontarlo accuratamente per te stesso. – Spudley

+1

anche, a seconda dell'applicazione in uso, si dovrebbe considerare se tutti gli utenti avranno l'ultima versione del sistema operativo, il browser, hardware o no. – Leo

risposta

3

non la sua lo stesso problema di tecnologia, come lo era prima in quanto motori JavaScript sono diventati così performante. Piuttosto ci sono altre considerazioni in termini di maggiore app.

enter image description here

ci sono trucchi, ora che sono diversi nel metodo come l'utilizzo di lavoratori web per le richieste Ajax per liberare il filo, utilizzando la GPU con le trasformazioni CSS e requestAnimationFrame o anche asm.js. L'utilizzo di localStorage/sessionStorage e Application Cache è un altro approccio lungo le linee in cui è possibile ottenere un sacco di cache sul lato client per evitare di chiamare qualsiasi cosa oltre il contenuto JSON/immagini URL/video e caricare/eseguire le cose in memoria come necessario da quei depositi.

È un momento diverso in altre parole e la tua domanda è interessante ma non focalizzata nelle aree giuste per fare davvero la differenza nelle prestazioni delle app web.

+2

Questo non risponde alla domanda. Inoltre, il primo grafico riguarda il numero di dispositivi venduti e non ha alcuna relazione con le loro prestazioni. – xpereta

+1

Penso che sia più utile al senso comune che ci sono altri fattori qui oltre a eval di cui preoccuparsi. Il punto era mostrare l'esplosione della tecnologia nel mercato e in che modo la nuova tecnologia ha un'analisi più veloce degli script. –

+1

@xpereta L'ho rimosso. Grazie. –

Problemi correlati