2011-10-03 5 views
5

Ho scritto un piccolo plug-in jquery che in pratica converte tutte le parole in un elemento html in espansioni, le rende invisibili e poi le anima in vista. Ho fatto in modo che tu possa definire il tempo che è necessario prendere per caricare l'intero elemento e, in base ai test, la matematica sembra essere corretta, ma in pratica richiede un po 'più di tempo.Quanto di un effetto può avere la CPU su JavaScript setInterval

See jsfiddle: http://jsfiddle.net/A2DNN/

Nota le variabili "a" e "MS", questo in sostanza dice che per elaborare "per" numero di parole ogni "MS" millisecondi.

Nel registro vedremo che elaborerà 1 parola in assoluto 1 ms, il che dovrebbe comportare tempi di caricamento MOLTO più rapidi.

Quindi mi stavo chiedendo, è possibile che la CPU stia creando un collo di bottiglia qui? In questo JS sono visibili gli elementi in dissolvenza, gestiti dalla CPU, che non è molto veloce nell'elaborazione grafica.

Sembra quasi sciocco chiedersi, mi aspetto che in questi giorni una CPU riderebbe di un piccolo carico di lavoro come questo.

+4

Nessun piccolo carico di lavoro, considerando l'enorme quantità di livelli di astrazione che il tuo JavaScript deve attraversare per essere eseguito sul metallo reale. – Brad

+3

La stragrande maggioranza del lavoro non è nella javascript stessa; si trova nel DOM del browser poiché deve creare un albero con foglie di tag 'span', per non parlare dello stile in linea di ognuno di essi in modo indipendente. – namuol

+0

Ok, quindi fondamentalmente JS non è il collo di bottiglia .. il DOM è. È un peccato, suppongo che per il momento non riesco davvero a risolvere il problema. Sentiti libero di inviare il tuo commento come risposta. – Naatan

risposta

3

È dovuto a un timeout minimo forzato dall'implementazione JavaScript del browser. Non puoi avere un timeout di 1 ms, è leggermente più di quello. C'è già stato un discussion su questo qui.

+0

Sembra che sia così. L'ho appena provato in Chrome, che lo carica molto più velocemente (stavo usando Firefox). Capisco perché hanno imposto il limite, ma allo stesso tempo sembra una brutta soluzione dalla loro parte per prevenire gli abusi. – Naatan

+0

Forse, ma è davvero necessario disporre di un timeout di 1 ms? Hai provato a elaborare più di una chiamata 'span' per funzione? Non è possibile stabilire se dieci parole appaiono contemporaneamente o con un ritardo di 1 ms. –

+1

Sì, potrebbe essere un buon compromesso, grazie per il suggerimento. – Naatan

Problemi correlati