2009-06-08 5 views

Respuesta

12

Bueno, la mejor manera de obtener su respuesta es simplemente tomar 2 minutos y escribir un ciclo que lo hace en ambos sentidos mil veces y compruebe firebug para ver cuál es más rápido;)

He tenido que optimizar una gran cantidad de munging de cadena mientras trabajo en MXHR y en mi experiencia, los métodos de String simple son significativamente más rápidos que RegExps en los navegadores actuales. Use RegExps en las cadenas más cortas posibles y haga todo lo posible con los métodos String.

Por ejemplo, yo uso este pequeño número en mi código actual:

var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', ''); 

Es feo como el infierno, pero aunque no lo crean es significativamente más rápido que la expresión regular equivalente a alta carga.

+1

Consideré la prueba a través de Firebug, pero en realidad no confiaba en la medición del tiempo de JS. Muchas gracias por su respuesta con un ejemplo de apoyo;) – BYK

+0

Así que no confíe en Firebug: cree y compare también un par de objetos de fecha – annakata

+0

Bueno, no confío en los objetos de JS Date en sí mismos desde cuando (hace algún tiempo) yo Intentó medir el rendimiento, aunque afirmó que era milisegundos preciso, siempre devolvía los múltiplos de segundos. Es por eso que no confío en eso. – BYK

1

Espero que usar split() sea mucho más rápido. Depende de muchos detalles, número de líneas vs. longitud, complejidad de expresiones regulares, etc.

+0

Gracias por tomarse el tiempo para responder. También esperaba que los métodos nativos fueran más rápidos, pero nada puede ser mejor que una experiencia para esta pregunta OMI. Gracias de todos modos =) – BYK

+1

Esa respuesta se basa en la experiencia :) como dfltr dijo, debe experimentar para su caso particular. – RedFilter

+0

Bueno, el problema es que no sé el tamaño de la cadena y la expresión regular será un simple \ n | \ r marcador si utilizo la expresión regular. ¿Alguna más sugerencia? =) (Por cierto lo siento por pensar que era una estimación;)) – BYK

9

Si bien esto es de 2 ½ años de retraso, espero que esto ayuda a arrojar alguna luz sobre el asunto para cualquier espectadores futuros: http://jsperf.com/split-join-vs-regex-replace (Incluye puntos de referencia los resultados de varios navegadores, así el código de prueba funcional en sí)