Comunidad Gambas-es
Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. (/thread-397.html)

Páginas: 1 2


Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - Shell - 06-05-2021

Buenas!.

Estaba buscando un archivo en un lugar de Internet, como ese lugar tenía tantos directorios era imposible encontrarlo
de una manera rápida.

Menos mal que en el directorio raíz existía un archivo filelist.zip. Que contenía en formato txt cada uno de los archivos,
directorios. Era la forma más fácil de localizar lo que quería.

Este es un archivo de texto comprimido. Con deciros que mide 20MB comprimido y descomprimido 150MB...casi nada.
¿ Quién podía decir que en un archivo de texto no podía caber tanta información ?. Smile

La idea de que sea un txt es por compatibilidad. Ya que son temas de Amiga Commodore.
Cargándolo y todo en un disco ssd se ve en el editor Xed, una barra de progreso...vamos que no carga a la primera y
el procesador se calienta "un poco".

El documento tiene 1413690 líneas. Si, más de un millón de líneas. Cool

Cuando uso la barras de desplazamiento vertical hay momentos que el fondo del editor se pone momentáneamente negro aunque las letras no dejan de verse.
Una vez que el documento es cargado la velocidad de mostrarlo es rápida. Al igual que cuando usamos el evento Data del TableView o GridView con
una base de datos grande para limitar el número de registros que se muestran.

Entonces, si este documento de txt se convirtiese a otros formatos:
¿ Ganaríamos en velocidad ?.
¿ El proceso de carga seria más rápido ?.
¿ El tamaño del archivo seria menor ?.

Estamos hablando de que es un texto puro sin aditivos.

Por muy grande que sea filelist.txt  he usado el comando grep para buscar el nombre del archivo que me interesa y la presentación de las coincidencias
fueron instantánea. ( si ya estaba en memoria el archivo ó que es realmente rápida la búsqueda ). Más que cargar todo el archivo y usar el buscador del
editor. Voy a cada coincidencia y no datos que no me interesa mostrar en la pantalla.

De todas formas si la coincidencia se encuentra al principio y al final, grep deberá leer el archivo entero, tal como lee Xed.

Cada línea del documento tiene la pinta de un archivo CSV con el carácter "|" de delimitador.
Ejemplo:
Cita:09/23/16|1976448|TheZone/files/_2016/expansion_boot_roms [Blizzard SCSI Kit III, Blizzard 2060 v8.2.].zip

Saludos


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - tincho - 06-05-2021

(06-05-2021, 13:58)Shell escribió: Entonces, si este documento de txt se convirtiese a otros formatos:
¿ Ganaríamos en velocidad ?.
¿ El proceso de carga seria más rápido ?.
¿ El tamaño del archivo seria menor ?.

Depende del formato
Depende del programa
Depende del formato y depende el programa

Luego la velocidad de grep no creo que tenga que ver con que cargue mas rápido o mas despacio el archivo de texto, me parece que tiene relación con que no lo carga todo de una vez sino que va cargando partes de este y las va analizando algo así como linea por linea, creo.
Saludos.


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - jguardon - 06-05-2021

¿Has probado a abrir una sesión sólo de terminal (Alt+F2, por ejemplo) y cargar mediante Vim, Nano o cualquier otro editor de texto de terminal?

Lamentablemente estoy notando últimamente que el rendimiento de los Linux actuales está empezando a quedar por debajo de otros S.O. más comunes y bastante más odiados para tareas tan simples como la que mencionas. Y no es una percepción mía, te invito a que hagas la prueba usando otro $istema operativo Cool

Llevo tiempo notando que Linux en general no está avanzando, sino retrocediendo en algunos aspectos. Quizás sea por su naturaleza libre y el hecho de que no exista un mando único, sino una especie de competición por ver quién la tiene más grande... Pero esto es sólo una apreciación mía, aunque da para bastante debate, creo.

Saludos


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - tincho - 06-05-2021

(06-05-2021, 20:31)jguardon escribió: Lamentablemente estoy notando últimamente que el rendimiento de los Linux actuales está empezando a quedar por debajo de otros S.O. más comunes y bastante más odiados para tareas tan simples como la que mencionas.

Hola Jesús, podrías dar mas detalles yo hace años que no uso otros $O. luego te referís a linux el núcleo o a el escritorio completo?
Saludos.


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - jguardon - 06-05-2021

No puedo precisar más. Algunas comparativas no medidas explicitamente son bastante decepcionantes. Tareas tan simples como cargar un pdf grande con MacOS o con W10 tardan bastante menos en máquinas similares, y ya no hablamos de reproducción de videos en HD.

Tengo un portátil con Intel I5 y 8Gb de RAM que uso para distintas tareas cambiando el HD según me interese, de forma muy fácil (sólo hay que quitar la tapa trasera deslizandola y de la misma forma, cambiar el HD que va enchufado mediante conectores SATA). Para trabajo no tengo más remedio que usar W7 y para mis cosas, uso un Linux Mint moderno. Pues bien, la diferencia de rendimiento es más que evidente y no llego a entender el porqué. Tampoco sale muy bien parado en cuanto a velocidad de gráficos y claridad y definición de los mismos, textos, etc. De verdad que llevo un tiempo examinando este hecho y es bastante preocupante.

Otra cosa más, suelo usar VirtualBox en una máquina de trabajo corriendo MacOS X y todas las instancias de Linux virtualizadas han experimentado una bajada de rendimiento espectacular, hasta el punto de no ser usables. Pero esto puede deberse a alguna cagada de los chicos de Oracle desde que compraron VirtualBox, no lo sé. En definitiva, llevo un tiempo bastante preocupado por el futuro de Linux y la evidente descentralización que lo caracteriza desde siempre para bien o para mal.

Saludos


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - tincho - 06-05-2021

(06-05-2021, 21:00)jguardon escribió: Otra cosa más, suelo usar VirtualBox en una máquina de trabajo corriendo MacOS X y todas las instancias de Linux virtualizadas han experimentado una bajada de rendimiento espectacular, hasta el punto de no ser usables. Pero esto puede deberse a alguna cagada de los chicos de Oracle desde que compraron VirtualBox, no lo sé. En definitiva, llevo un tiempo bastante preocupado por el futuro de Linux y la evidente descentralización que lo caracteriza desde siempre para bien o para mal.

Si, en eso BSD le lleva la delantera Linux (osx es un bsd).
Hace mucho que deje mint porque era lento y siempre pasaba algo, ahora uso manjaro y es muy rápido, prueba en la maquina virtual y me dices.
Saludos.


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - Shell - 06-05-2021

(06-05-2021, 20:31)jguardon escribió: ¿Has probado a abrir una sesión sólo de terminal (Alt+F2, por ejemplo) y cargar mediante Vim, Nano o cualquier otro editor de texto de terminal?

He probado con Nano y la carga es instantánea. Ademas muestra todas las líneas que ha leído , todas.

LibreOffice produce una barra de progreso y luego se queda en blanco un rato, pero tarda.

Atom....

[Imagen: U1Dkc5Z.png]

En parte normal, por si se desespera el usuario.

SublimeText es instantáneo. Ultra-rápido.

Se podía decir que cada aplicación actuá de forma distinta, cada una de ellas es mejor para una cosa que
para otra.

Hago otro test y vuelvo.

Saludos


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - tincho - 07-05-2021

(06-05-2021, 22:43)Shell escribió: He probado con Nano y la carga es instantánea.

Probaste con gedit?
Saludos.


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - Shell - 08-05-2021

(07-05-2021, 00:12)tincho escribió: Probaste con gedit?

Es igual que Xed. Que por cierto, la primera vez que lo veo no me gusta ya que no muestra la barra de menú. ( Habrá que mirar opciones ).

Una cuestión.

Las puntuaciones que se les da a las aplicaciones en el gestor de software de Linux Mint se supone que aunque lo veas desde otra
versión de distro de Linux Mint, ¿ es la misma ?. Me aparecido ver que en la 19.1 puntuaban muy bien a "Pluma" ( el editor de Linux Mint
por defecto) y en cambio en la 20.1 no le dan tan buena puntuación.

Nano está por encima de Gedit en cuanto a puntuación. Y Pluma en la 20.1 está por debajo de Gedit.

Si uso el comando:

Código:
time cat filelist.txt

En consola sin estar el escritorio gráfico presente tarda 4m 55, 898s
Con la consola estando el escritorio, tarda 9,143s

Si ejecuto:

Código:
Public Sub Ejemplo1()
 
  Dim ruta As String
  Dim cadena As String
  Dim t As Float

  ruta = User.Home &/ "Descargas/filelist.txt"
  t = Timer

  cadena = File.Load(ruta)
  Print cadena
  Print "Tiempo de carga y muestra: " & Format(Timer - t, "0.#####" & "s")

Catch
  Print "Error: " & Error.Text
 
End

En la consola sin el escritorio, casi igual que la orden "cat" en la misma situación.
Y de la forma consola bajo escritorio, igual que la orden "cat".

Saludos


RE: Acelerar la lectura de un archivo texto cuando su tamaño es muy grande. - tincho - 09-05-2021

(08-05-2021, 11:57)Shell escribió: En la consola sin el escritorio, casi igual que la orden "cat" en la misma situación.
Y de la forma consola bajo escritorio, igual que la orden "cat".

Shell: seria interesante que pases el link del archivo de texto que usaste para hacer las pruebas así podemos probar cada uno en la configuración local.
Saludos.