Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/02/2010, 15:45
vbolivar
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Mejorar un Substring

Cita:
Iniciado por Myakire Ver Mensaje
Pues entonces así las cosas, la función substring, como tal no creo que valga en algo "optimizarla", yo supongo que lo único optimizable es tu algoritmo o tu proceso codificado, pero no lo pones de forma que pueda analizarlo y ayudarte en eso. No se si hayas investigado sobre [URL="http://javascripts.astalaweb.com/Ayuda/html/js56jsgrpregexpsyntax.asp"]expresiones regulares[/URL], podrían ayudarte a validar alguna cadena sin tener que cortarla.

Por otro lado, supongo por la propia función que estas trabajando en javascript, ahora solo faltaría que me aclararas si estas programando ASP con javascript o es del lado del cliente tu problema; si es lo primero para mover tu tema a ese foro.
Estoy trabajando en c sharp como tal.

Y en efecto lo que ando es en busqueda de una funcion o algo parecido que sea mas rapido que un substring, el ciclo de verdad es muy simple un
while mientras no sea el final que recorre todo el txt con un case dentro
para los casos determinados segun los 5primeros caracteres y el chorro de substring para cada uno segun sea el caso.

Y realizo los substring porque cada substring me devuelve un valor que se almacena en un campo determinado, es decir, necesito recortar la informacion para almacenarla donde toca.

Nose si me equivoque en el post, si es asi muevelo y diculpa esa

saludos

Edito:
Me puse a realizar pruebas por separado del substring en ciclos de 1.000.000 y los resultados verdaderamente son rapidisimos.
6-7 seg. con este codigo

dt = DateTime.Now;
for (int x=1;x<100000000;x++)
str2 = str.Substring(10, 1);
dt1 = DateTime.Now;
MessageBox.Show(dt.ToString("T") + " - "+ dt1.ToString("T"));

Pero si lo coloco asi:
dt = DateTime.Now;
for (int x=1;x<100000000;x++)
str2 = str.Substring(X, 1);
dt1 = DateTime.Now;
MessageBox.Show(dt.ToString("T") + " - "+ dt1.ToString("T"));

Tarda una eternidadddddddd......

Lo cual me hace pensar que esta funcion debe usar algun indice de posicionamiento que si alguien sabe como manipularlo
seria la solucion. Por su puesto que cambie aleatoriamente el valor inicial de 10 y tambien cambie el tamaño de la lectura
y los tiempos no varian significativamente. Este indice de posicionamiento debe quedarse en el lugar de la ultima llamada
para que sea asi de rapido, el rollo es que si la proxima lectura inicia de otra posicion yo creo que el muy nerdo se va al inicio
y empieza a contar otra ves la posicion de donde va a empezar a hacer la subtraccion.

Gracias nuevamente.

Última edición por vbolivar; 02/02/2010 a las 18:00