Tengo una cadena muy grande (varios Mb) que tengo que buscar usando expresiones regulares en un bucle, avanzando de elementos de cadena a elementos de cadena. Por ejemplo, buscando A, luego B siguiendo a A, luego 5 siguiendo a B, etc.:
[...]A[...]B[...]5[...]La forma lógica sería buscar A, luego buscar B desde A, luego 5 desde B, etc. Pero ese método, en JS, requiere una subcadena en cada bucle (ya que find/search/match/exec no permite buscar desde una posición específica).
Mi pregunta, en ese sentido, es bastante simple: ¿es mejor (en términos de velocidad) trabajar con una "cadena temporal" que se subdividirá en cada bucle?
let tmpString = stringToParse loop 0..n: match = tmpString.find() tmpString = tmpString.substring(match.index)lo que da como resultado una copia de cadena grande (incluso si es un poco más pequeña en cada iteración) en la memoria, o más bien expresiones regulares desde el principio cada vez:
loop 0..n: match = stringToParse.find()pero resultando aquí, por supuesto, de un análisis de partes de cadena que ya no necesita ser analizado.
Escriba sus algoritmos, luego vaya a https://jsbench.me/ y verifique cuál es más rápido.