2011-10-03 5 views
5

Escribí un pequeño complemento jquery que básicamente convierte todas las palabras en un elemento html en líneas, las hace invisibles y luego las anima a la vista. Lo hice para que puedas definir el tiempo que se supone que tardará en cargar todo el elemento, y según las pruebas, la matemática parece ser la correcta, pero en la práctica lleva bastante más tiempo.Cuánto de un efecto puede tener la CPU en JavaScript setInterval

Ver jsFiddle: http://jsfiddle.net/A2DNN/

Nota las variables "por" y "ms", esto dice básicamente para procesar "por" número de palabras cada "ms" milisegundos.

En el registro verás que procesará 1 palabra cada 1 ms, lo que debería dar como resultado un MUCHO más rápido tiempo de carga.

Así que me pregunto, ¿es posible que la CPU esté formando un cuello de botella aquí? En eso JS está desvaneciendo elementos a la vista, que es manejado por la CPU, que no es muy rápido en el procesamiento gráfico.

Suena casi tonto preguntar, esperaba que en estos días una CPU se riera de una pequeña carga de trabajo como esta.

+4

No hay una pequeña carga de trabajo, considerando la enorme cantidad de capas de abstracción que debe atravesar su JavaScript para ejecutarse en un metal real. – Brad

+3

La gran mayoría del trabajo no está en el javascript mismo; está en el DOM del navegador, ya que tiene que crear un árbol con muchas hojas de etiquetas 'span', sin mencionar el estilo en línea de cada una de ellas independientemente. – namuol

+0

Ok, básicamente, JS no es el cuello de botella ... el DOM sí lo es. Es una pena, supongo que por el momento no puedo evitar eso. Siéntete libre de enviar tu comentario como respuesta. – Naatan

Respuesta

3

Se debe a un tiempo de espera mínimo forzado por la implementación de JavaScript del navegador. No puede tener un tiempo de espera de 1 ms, es un poco más que eso. Ya ha habido un discussion sobre eso aquí.

+0

Eso parece ser. Lo probé en Chrome, que lo carga significativamente más rápido (estaba usando Firefox). Entiendo por qué impusieron el límite, pero al mismo tiempo se siente como una desagradable solución para evitar el abuso. – Naatan

+0

Tal vez, pero ¿realmente es necesario tener un tiempo de espera de 1 ms? ¿Has intentado procesar más de un 'lapso 'por llamada de función? Realmente no se puede decir si aparecen diez palabras simultáneamente o con un retraso de 1 ms. –

+1

Sí, eso podría ser un buen compromiso, gracias por la sugerencia. – Naatan

Cuestiones relacionadas