¿Es getElementById () eficiente?

A menudo uso el método getElementById("id1"); en mis methods Lo uso para encontrar ciertos elementos en mi HTML. Me pregunto si debo preocuparme por cuánto uso si tiene que search todo el DOM todo el time.

¿Cómo funciona este método? ¿Analiza el DOM y devuelve el elemento cuando se encuentra, o tiene todos esos valores indexados de alguna manera y por lo tanto puede regresar más rápidamente?

PD: Tengo curiosidad sobre el método en general, pero estoy usando un Android WebView si eso hace alguna diferencia.

getElementById es muy rápido y no deberías preocuparte por el performance.

Si está utilizando la misma ID una y otra vez (y una y otra vez) de nuevo, es posible que desee almacenarla en caching. La ganancia de performance es despreciable:

 var myId = getElementById("myId"); myId.operation1(); myId.operation2(); myId.andSome5000MoreCalls(); 

Verifique esta respuesta SO para algunos puntos de reference. Los resultados que Mike publicó fueron:

IE8 getElementById: 0.4844 ms
Búsqueda de array IE IE8: 0.0062 ms

Chrome getElementById: 0.0039 ms
Búsqueda de matriz de ID de Chrome: 0,0006 ms

Firefox 3.5 era comparable a Chrome.

De hecho, getElementById es la forma más rápida de acceder a un elemento en el DOM. La indexing depende del browser específico, pero aquí hay un punto de reference para ello:

http://jsperf.com/getelementbyid-vs-everyone-else

Los elementos con ID están indizados, seleccionar un elemento por su ID a través de la function DOM es la forma más eficiente de selección.