Buscar información en archivo plano

09/02/2005 - 22:16 por Juan Carlos S | Informe spam
Hola a todos
Ultimamente estoy como que muy pregunton

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos

La búsqueda es secuencial, y aunque se encuentra la info
en ocaciones el proceso se hace demasiado lento, y tarda
demasiado en encontrar las cosas

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite

Una posible forma seria mediante archivos aleatorios,
pero según lo que entiendo estos requieren de longitudes
fijas , y los archivos de texto que yo manejo no se
caracterizan por esto, son completamente variables

Bueno estoy buscando ayuda de como mejorar mi proceso de
búsqueda, y así no tener tantos periodos de espera para
los usuarios

Estoy usando VB.net

Pero realmente lo que menos me importa es el lenguaje, lo
que realmente deseo es buscar la solución mas adecuada a
mi problema

Un saludo

Juan Carlos

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
09/02/2005 - 23:29 | Informe spam
JC,

- Primero te recomendaría no hacer la búsqueda leyendo los ficheros línea a
línea, sino trayendo de golpe a memoria bloques grandes de cada documento
(si es posible, el documento entero). Podrías usar para ello por ejemplo la
clase MemoryStream de .NET.
http://msdn.microsoft.com/library/d...stopic.asp

Intenta optimizar por esta vía. Si lo que obtienes no es suficiente,
entonces el siguiente paso podría ser:

- Segundo, no hacer la búsqueda utilizando los mecanismos tradicionales
(como las funciones de cadenas de la librería de .NET), sino algún algoritmo
especializado para la búsqueda en cadenas grandes, como Boyer-Moore o
Rabin-Karp. Aquí he encontrado un enlace a una implementación de
Boyer-Moore:
http://www.gotdotnet.com/Community/...9c61add085

Por supuesto, te haría falta algún libro o enlace sobre la teoría de esos
algoritmos (no son tan complicados!). Por ejemplo, podrías empezar aquí:

http://es.wikipedia.org/wiki/Algori..._en_textos

Slds - Octavio

"Juan Carlos S" escribió en el mensaje
news:277b01c50eec$a4b2a910$
Hola a todos
Ultimamente estoy como que muy pregunton

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos

La búsqueda es secuencial, y aunque se encuentra la info
en ocaciones el proceso se hace demasiado lento, y tarda
demasiado en encontrar las cosas

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite

Una posible forma seria mediante archivos aleatorios,
pero según lo que entiendo estos requieren de longitudes
fijas , y los archivos de texto que yo manejo no se
caracterizan por esto, son completamente variables

Bueno estoy buscando ayuda de como mejorar mi proceso de
búsqueda, y así no tener tantos periodos de espera para
los usuarios

Estoy usando VB.net

Pero realmente lo que menos me importa es el lenguaje, lo
que realmente deseo es buscar la solución mas adecuada a
mi problema

Un saludo

Juan Carlos
Respuesta Responder a este mensaje
#2 Anonimo
09/02/2005 - 23:35 | Informe spam
Tienes un esbozo de pseudo-codigo de tu proceso de
búsqueda. Quizá en ciertas partes de codigo se puede
mejorar el rendimiento.

Una duda, aunque a ti not epueda solucioanr, es si con
XML mejoraría el rendimiento, que algún experto comente,
pues XML también son ficheros de texto, aunque System.XML
no sé si será más rapido que System.IO.

Yo te propongo, en mi inexperiencia, al menos contemplar
la posiblidad de Hilos, System.Threading.

Si tu aplicación es WinForms, quizá lanzando varios Hilos
de busqueda se pueda mejorar rendimiento. Quizá un hilo
por cada fichero, sino son muchos.

Lo que conozco es que puede mejorar bastante, teniendo
cuidado del acceso a variables compartidas y no creando un
número elevado de hilos.
Mucho más no puedo decirte en cuanto a rendimiento.
Recurrimos otra vez a los expertos, que hayan trabajado
más a fondo.


Hola a todos
Ultimamente estoy como que muy pregunton

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos

La búsqueda es secuencial, y aunque se encuentra la info
en ocaciones el proceso se hace demasiado lento, y tarda
demasiado en encontrar las cosas

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite

Una posible forma seria mediante archivos aleatorios,
pero según lo que entiendo estos requieren de longitudes
fijas , y los archivos de texto que yo manejo no se
caracterizan por esto, son completamente variables

Bueno estoy buscando ayuda de como mejorar mi proceso de
búsqueda, y así no tener tantos periodos de espera para
los usuarios

Estoy usando VB.net

Pero realmente lo que menos me importa es el lenguaje, lo
que realmente deseo es buscar la solución mas adecuada a
mi problema

Un saludo

Juan Carlos

.

Respuesta Responder a este mensaje
#3 Alfredo Novoa
10/02/2005 - 11:59 | Informe spam
On Wed, 9 Feb 2005 13:16:38 -0800, "Juan Carlos S"
wrote:

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos



¿Que es un archivo plano?

La búsqueda es secuencial, y aunque se encuentra la info
en ocaciones el proceso se hace demasiado lento, y tarda
demasiado en encontrar las cosas



Normal.

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite



XML solo sirve para empeorar las cosas.

Una posible forma seria mediante archivos aleatorios,



¿Que es un archivo aleatorio?

Bueno estoy buscando ayuda de como mejorar mi proceso de
búsqueda, y así no tener tantos periodos de espera para
los usuarios



Una solución fácil es usar un Sistema de Gestión de Bases de Datos.

Otra es que uses un arbol de búsqueda o si la información de los
ficheros es fija pues la ordenas y haces una búsqueda binaria.

Esto es un tema muy muy básico.

Saludos.
Respuesta Responder a este mensaje
#4 Juan Carlos S
10/02/2005 - 17:49 | Informe spam
Hola de nuevo

Les comento voy a ensayar lo que me han propuesto

En efecto el archivo que tengo ahora Un archivo de texto
normal que no es binario, lo estoy leyendo linea a linea

El XML no lo uso ya que debido a las caracteristias
sintacticas del XML, me ocasiona conflicos, con un
archivo especial que yo manejo, y me generia información
errada

Tratare de cargar todo en memoria hasta el momento me he
enfrentado a archivos de 30 MB, cierta vez utilice
ReadToEnd de FileStream para cargar todo el contenido del
Archivo Plano (Texto Normal) pero me salio un error de
memoria insuficiente, claro eso fue hace cierto tiempo
tendria que volverlo a considerar, al igual que la opcion
que propone octavio

Les estare comentando sobre mis resultados, y ensayare
cada una de las opciones que ustedes me han propuesto

Gracias

Juan Carlos S.


Tienes un esbozo de pseudo-codigo de tu proceso de
búsqueda. Quizá en ciertas partes de codigo se puede
mejorar el rendimiento.

Una duda, aunque a ti not epueda solucioanr, es si con
XML mejoraría el rendimiento, que algún experto comente,
pues XML también son ficheros de texto, aunque


System.XML
no sé si será más rapido que System.IO.

Yo te propongo, en mi inexperiencia, al menos contemplar
la posiblidad de Hilos, System.Threading.

Si tu aplicación es WinForms, quizá lanzando varios


Hilos
de busqueda se pueda mejorar rendimiento. Quizá un hilo
por cada fichero, sino son muchos.

Lo que conozco es que puede mejorar bastante, teniendo
cuidado del acceso a variables compartidas y no creando


un
número elevado de hilos.
Mucho más no puedo decirte en cuanto a rendimiento.
Recurrimos otra vez a los expertos, que hayan trabajado
más a fondo.


Hola a todos
Ultimamente estoy como que muy pregunton

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos

La búsqueda es secuencial, y aunque se encuentra la




info
en ocaciones el proceso se hace demasiado lento, y




tarda
demasiado en encontrar las cosas

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite

Una posible forma seria mediante archivos aleatorios,
pero según lo que entiendo estos requieren de




longitudes
fijas , y los archivos de texto que yo manejo no se
caracterizan por esto, son completamente variables

Bueno estoy buscando ayuda de como mejorar mi proceso




de
búsqueda, y así no tener tantos periodos de espera para
los usuarios

Estoy usando VB.net

Pero realmente lo que menos me importa es el lenguaje,




lo
que realmente deseo es buscar la solución mas adecuada




a
mi problema

Un saludo

Juan Carlos

.



.

Respuesta Responder a este mensaje
#5 Anonimo
10/02/2005 - 21:20 | Informe spam
Usted parece muy soberbio, nadie le obliga a responder en
este foro. Le recusamos con respeto.

On Wed, 9 Feb 2005 13:16:38 -0800, "Juan Carlos S"
wrote:

Bueno, yo tengo un programa que realiza búsquedas de
información sobre archivos planos



¿Que es un archivo plano?

La búsqueda es secuencial, y aunque se encuentra la info
en ocaciones el proceso se hace demasiado lento, y tarda
demasiado en encontrar las cosas



Normal.

De verdad quiero mejorar el proceso, no puedo usar xml,
ya que la infraestuctura no me lo permite



XML solo sirve para empeorar las cosas.

Una posible forma seria mediante archivos aleatorios,



¿Que es un archivo aleatorio?

Bueno estoy buscando ayuda de como mejorar mi proceso de
búsqueda, y así no tener tantos periodos de espera para
los usuarios



Una solución fácil es usar un Sistema de Gestión de Bases


de Datos.

Otra es que uses un arbol de búsqueda o si la información


de los
ficheros es fija pues la ordenas y haces una búsqueda


binaria.

Esto es un tema muy muy básico.

Saludos.
.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida