Haré un poco de trabajo en una línea separada por líneas. ¿Cuál será más rápido, para dividir el texto a través de String.split primero y luego caminar sobre la matriz resultante o caminar directamente el texto completo a través de un reg exp y construir la matriz final en el camino?Pregunta de rendimiento: String.split y luego caminar sobre la matriz, o RegExp?
Respuesta
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.
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.
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
Esa respuesta se basa en la experiencia :) como dfltr dijo, debe experimentar para su caso particular. – RedFilter
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
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í)
- 1. La pregunta sobre cerr cout y clog
- 2. pregunta sobre? y: en C++
- 3. ¿Cómo obtener media, mediana y otras estadísticas sobre toda la matriz, matriz o marco de datos?
- 4. Pregunta sobre punteros y cadenas en C
- 5. Pregunta de novato sobre Lisp y Paquetes
- 6. Python pregunta sobre exponentes y int
- 7. Pregunta sobre la sobrecarga de Java y el enlace dinámico
- 8. Rendimiento de la matriz de funciones sobre las instrucciones if y switch
- 9. Pregunta sobre los compiladores y cómo funcionan
- 10. Pregunta sobre la salida var_dump
- 11. Pregunta sobre el polimorfismo de Java y la fundición
- 12. Pregunta sobre la implementación de Bezier Curves?
- 13. pregunta general sobre Ruby
- 14. Pregunta sobre el diseño de la tabla
- 15. string.split (text) o text.split() ¿cuál es la diferencia?
- 16. Pregunta sobre Environment.ProcessorCount
- 17. Pregunta sobre Cyclone
- 18. Java pregunta sobre autoboxing y la igualdad de objeto/identidad
- 19. Pregunta complicada de la entrevista sobre la búsqueda
- 20. Pregunta rápida sobre sprites CSS y uso de memoria
- 21. Pregunta sobre foreach y los delegados
- 22. Pregunta sobre el patrón de la torta
- 23. Pregunta simple sobre la tupla de scala
- 24. pregunta sobre la multiplicación de karatsuba
- 25. pregunta básica sobre la sobrecarga de métodos
- 26. Pregunta sobre eventos de Windows
- 27. pregunta de matriz de PHP
- 28. Pregunta sobre el método
- 29. Pregunta de rendimiento de Java Collection
- 30. Pregunta sobre round_up macro
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
Así que no confíe en Firebug: cree y compare también un par de objetos de fecha – annakata
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