Foros del Web » Programando para Internet » ASPX (.net) »

Mejorar un Substring

Estas en el tema de Mejorar un Substring en el foro de ASPX (.net) en Foros del Web. Hola buenos dias estoy desarrollando una aplicacion y necesito mejorar el rendimiento de esta sentencia: z=s.substring(ini,fin) El problema radica en que estoy leyendo un arhivo ...
  #1 (permalink)  
Antiguo 01/02/2010, 00:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Mejorar un Substring

Hola buenos dias estoy desarrollando una aplicacion y necesito mejorar
el rendimiento de esta sentencia:

z=s.substring(ini,fin)

El problema radica en que estoy leyendo un arhivo .txt de unas 900mil lineas
y aunque el ancho de cada linea no es mucho si estoy realizando dicha
sentencia unas 10 veces por linea mas o menos para recortar la informacion
que me interesa.

Pero ahorita esta tardando 8h!!!

Cuaquier comentario se les agradece.
  #2 (permalink)  
Antiguo 01/02/2010, 05:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Mejorar un Substring

Hola

Prueba con FSO

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 02/02/2010, 11:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Mejorar un Substring

Cita:
aunque el ancho de cada linea no es mucho si estoy realizando dicha sentencia unas 10 veces por linea mas o menos para recortar la informacion que me interesa
Si el ancho no es mucho, no entiendo por que 10 veces la recortas para obtener lo que ocupas.

Quizá lo que hay que mejorar es ese algorítmo, aunque no lo pones. Otra cosa es que dudo mucho que cada vez tengas que leer las 90 mil lineas, supongo que solo te interesan en realidad las más actuales, si es así, entonces más bien habría que hacer algo para filtrar las lineas que no se tengan que procesar. Una vez más se necesita saber el algoritmo de tu proceso.

Saludos
  #4 (permalink)  
Antiguo 02/02/2010, 13:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mejorar un Substring

Cita:
Iniciado por Myakire Ver Mensaje
Si el ancho no es mucho, no entiendo por que 10 veces la recortas para obtener lo que ocupas.

Quizá lo que hay que mejorar es ese algorítmo, aunque no lo pones. Otra cosa es que dudo mucho que cada vez tengas que leer las 90 mil lineas, supongo que solo te interesan en realidad las más actuales, si es así, entonces más bien habría que hacer algo para filtrar las lineas que no se tengan que procesar. Una vez más se necesita saber el algoritmo de tu proceso.

Saludos
La linea es como de 50 -60 caracteres maximo

El ciclo no tiene nada de fuera de lo comun lo leo de inicio a fin porque debo
incorporar a la bd toda la data (no puede ser parte, tiene que ser toda) obvio que es un ciclo que se ejecuta muy pocas veces pero cuando se ejecuta se requieren los valores de manera mas rapida.


Y lo hago "n" veces por linea porque por ejemplo las 5 primeras letras me dicen que tipo de linea es y segun ese valor, es que sea se arma un rompecabezas de lectura por caracteres es decir, 5 primeros siempre, segun el tipo hago recortes parciales de la linea muchas veces hasta por mas de 10 veces la misma segun aplique.

Y tarda es en hacer ese chorro de substring porque si comento esa linea, la cosa no tarda mas de 20m, con la linea 8h.

Última edición por vbolivar; 02/02/2010 a las 13:22
  #5 (permalink)  
Antiguo 02/02/2010, 14:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Mejorar un Substring

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 expresiones regulares, 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.
  #6 (permalink)  
Antiguo 02/02/2010, 15:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 2 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
  #7 (permalink)  
Antiguo 02/02/2010, 17:34
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Mejorar un Substring

aaahh C#, entonces es con .NET el asunto

Movido desde el foro de asp clásico

Etiquetas: mejoras, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.