Tengo un archivo de texto pesado que es de 100 MB. No me sorprendió cuando se bloqueó mi editor de texto cuando intenté abrirlo. Pero, ¿por qué una computadora con 8 GB de memoria no puede abrir un archivo de texto de 100 MB?

Eso es un editor (realmente) mal escrito, demasiada memoria RAM consumida por otros programas (lo que causa paginación, posiblemente junto con un HD lento) o tal vez incluso (computadora de borde) una computadora con memoria RAM defectuosa para que obtenga una falla de página cuando cruzar un cierto límite de memoria.

Incluso Windows + Notepad puede cargar archivos más grandes que eso con bastante facilidad. Una prueba rápida aquí con un archivo de listado de directorio de 250 MB que tenía por ahí (2.5 veces su ejemplo) se carga en 5 segundos y tiene más de 2.5 millones de líneas de largo.

Manipularlo también es rápido y fácil. No hay paginación, y una búsqueda y reemplazo de “c:” con “hola” (que ocurre en cada línea de este archivo de prueba) haría que el archivo sea aún más grande, lo que obligaría a barajar más la memoria, etc., y eso tomó solo otro 5 segundos más o menos. La navegación normal es casi instantánea.

El Bloc de notas está lejos de ser un editor de texto ideal, pero si incluso eso puede manejar archivos del tamaño que mencionas con relativa facilidad, entonces deberías considerar reemplazar tu computadora o desinstalar lo que puedas tener que está acaparando todos los recursos de tu sistema y haciendo cosas corre muy despacio.

Desafortunadamente, responder esto con un nivel de detalle para satisfacer a un programador podría ser difícil sin el código fuente de la aplicación que abre el archivo de texto, e incluso entonces, podría ser difícil sin el código fuente para el marco de la interfaz de usuario del sistema operativo debido a una implementación simplista en Es probable que un sistema operativo moderno simplemente cargue todo el texto en un control de cuadro de texto cuyos comportamientos internos se determinan en el código de nivel OS / Framework. A menudo me he preguntado por qué la aplicación de bloc de notas que viene con Windows es tan mala para abrir archivos grandes, incluso cuando se lanzan versiones más nuevas de Windows y los archivos más grandes son más comunes.

Algunas de las cosas que sospecho pueden estar sucediendo:

  1. El Bloc de notas puede estar intentando asignar un búfer de una vez para contener todo el contenido del archivo que ha cargado. Normalmente, no pensaría que esto sería un problema en un sistema con 8 GB de RAM física disponible, pero la memoria no siempre se presenta de forma limpia en grandes fragmentos individuales que solo puede usar. Muchas veces se fragmentará y obtener una gran porción podría ser difícil. Mis observaciones son que Notepad finalmente carga archivos grandes, pero solo lleva un tiempo ridículamente largo. Sin embargo, no sé si alguna vez he probado 100 MB en el Bloc de notas. Es lento, incluso con archivos de 5 MB. Las aplicaciones más inteligentes pueden simplemente cargar la porción del archivo que está visible actualmente en un búfer y dejar el resto descargado o “mapeado virtualmente” en la memoria sin cargarlo realmente hasta que se busque o se acceda de otra manera. No puedo recordar los detalles de cómo funciona esto, pero creo que el sistema operativo es lo suficientemente inteligente cuando asigna un archivo grande en el espacio de memoria para no tratar de asignar espacio para todos esos datos en la RAM de una vez. Pero no es muy sencillo, por lo que muchos editores de texto probablemente no harían esto.
  2. Debido a que los datos son un flujo lineal único de bytes en el disco, pero aparecen en una cuadrícula bidimensional en el editor, el editor podría intentar asignar una matriz bidimensional de caracteres en la memoria para editar el texto. De esa manera, es muy simple saber qué hacer cuando el usuario presiona la flecha hacia arriba o hacia abajo. Pero al asignar una matriz bidimensional, puede terminar con algunos resultados muy ineficientes. Esto también explicaría otro comportamiento extraño del Bloc de notas: la longitud máxima de la línea. El Bloc de notas ajusta líneas más largas que 1024 caracteres, incluso si no tienen una nueva línea. Suponga que el búfer asignado automáticamente asume que * cada * línea tiene 1024 caracteres de longitud (lo que tendría que hacer una matriz 2-D). Eso significa que si tiene un archivo de texto de 100 MB que tiene 80 caracteres de ancho, tendría aproximadamente 1,25 millones de líneas. Multiplique eso por 1024 caracteres por línea y obtendrá 1.28 mil millones de caracteres. Aunque todavía no ha alcanzado el límite de la memoria de su computadora o el límite del espacio de memoria de un proceso de 32 bits, está llegando al menos al orden de magnitud correcto para hacerlo. Ahora suponga que la longitud promedio de la línea en su archivo de texto era de solo 40 caracteres en lugar de 80. Eso duplicaría el número de caracteres a 2.5 mil millones de caracteres. Ahora podríamos estar bien si cada carácter es de 1 byte, pero la mayoría del software moderno (incluido el Bloc de notas) admite Unicode, lo que significa que tenemos 2 bytes (o, a veces, incluso más) por carácter. Eso significa que 2.500 millones de caracteres requieren aproximadamente 5 GB, que es más de lo que puede poner en un proceso de 32 bits, independientemente de la cantidad de memoria disponible en el sistema.

Depende de la estrategia de programación del software editor.

Hemos estado usando con éxito el editor VIM en Windows y Gedit en Linux.

Básicamente es la cantidad de RAM que se puede utilizar y de qué manera.

Word y el Bloc de notas no son realmente buenas opciones para tales fines. Y, por lo general, las personas no guardan datos de texto tan grandes en un solo fragmento. Eso es inutilizable. Si los datos de texto son datos estructurados, mejor guárdelos en la base de datos. Muchas personas todavía piensan en guardar datos en archivos de texto delimitados por tabulaciones y cargarlos en la matriz en el momento de la ejecución. Es un proceso propenso a los choques.

Creo que puedo explicar un poco del “por qué” para esto en términos de cómo funciona el editor de texto.

Veamos el Bloc de notas, el programa que todas las computadoras con Windows usan de manera predeterminada para abrir archivos de texto. Notepad es uno de los primeros programas escritos para Windows, y su código no ha cambiado mucho desde los días en que todo el sistema operativo y la GUI podían ejecutarse desde un solo disquete o un pequeño disco duro. (¿Alguien recuerda los días de 20 discos duros MEGAbyte?) Hubo un momento en el que era literalmente imposible tener un archivo de más de unos pocos megas, y mucho menos 100 MB.

Como tal, el Bloc de notas tiene un método muy ineficiente para administrar el texto en su búfer. Maneja cantidades de texto relativamente pequeñas, pero comienza a descomponerse rápidamente a medida que crece el tamaño del búfer de texto.

El Bloc de notas lee todo el archivo de texto en la memoria de una vez y lo mantiene allí como un búfer monolítico. No sabe ni le importa cuán grande es un archivo cuando comienza a cargar el archivo, por lo que no sabe cuánta memoria asignar al texto. Asignará un tamaño de búfer nominal (por ejemplo, 64 KB) para contener una cantidad razonable de texto, llenará ese búfer rápidamente y luego intentará aumentar el búfer para que quepa más texto. Si MY memory funciona, lo hace asignando un búfer completamente nuevo del tamaño más grande, copiando los datos del búfer anterior al nuevo, eliminando el búfer antiguo y luego cargando más texto del archivo. Como puede imaginar, esto toma más y más tiempo a medida que aumenta el tamaño del búfer; de hecho, el tiempo es exponencial.

Además, agregar un carácter en el medio del archivo hace que todo el búfer crezca un carácter, y todos los caracteres DESPUÉS de que el cursor se desplace un lugar antes de insertar el nuevo carácter. Una vez más, esto está bien para pequeñas cantidades de datos, pero comienza a convertirse en un verdadero dolor de cabeza con memorias intermedias más grandes.

Agregue a esto que toda la gestión de la memoria, la manipulación de datos, etc., todo ocurre en un solo hilo, lo que significa que cada vez que escribe un carácter, debe esperar a que termine de ejecutar todo el código que necesita. para manejar adecuadamente ese personaje. Lo mismo ocurre con la carga de archivos en la memoria, etc. – El Bloc de notas parecerá que no responde (porque lo es) porque está pasando todo su tiempo manejando la carga de ese archivo y no tiene ninguna forma de hacer nada más hasta que haya terminado.

Ahora, los programas más inteligentes como EditPad, NotePad ++, SublimeText, etc., están escritos para manejar archivos grandes de manera más eficiente. En primer lugar, saben qué tan grande es un archivo al ver su información de tamaño en el disco, por lo que, si es necesario, pueden preasignar un búfer lo suficientemente grande como para contener todo el archivo, más espacio adicional, y simplemente leer todos los datos en una ida. En segundo lugar, algunos de estos programas son multiproceso: pueden manejar grandes cargas en segundo plano mientras la interfaz de usuario sigue respondiendo, lo que le permite desplazarse por el archivo incluso mientras se está cargando. En tercer lugar, sus algoritmos son más complejos y optimizados para tareas de edición, muchos algoritmos mucho más inteligentes se han escrito en gran parte debido a la relativa estupidez del Bloc de notas, de modo que las ediciones no necesariamente requieren mover grandes cantidades de memoria.

Y finalmente, algunos de estos programas son capaces de “transmitir” el archivo en lugar de cargarlo todo en la memoria. Esto significa que solo una pequeña porción del archivo está realmente en la memoria al mismo tiempo; piense en ello como leer un libro. Cuando lee un libro, no hojea todo el libro y carga cada página, cada palabra en su cabeza, y luego lee esa gran cantidad de información interna resultante. En cambio, lees las palabras una página a la vez, solo puedes ver la página que tienes frente a ti en ese momento. Por supuesto, puede voltear hacia adelante o hacia atrás, y también lo puede hacer un editor de texto inteligente. Y esto es, de hecho, lo que permite que un buen editor de texto pueda leer eficientemente archivos que son más grandes que la cantidad de memoria que tiene en la máquina.

Espero que esto ayude.

Como otros han mencionado, esto no tiene casi nada que ver con su computadora y casi todo con la forma en que está programado su editor de texto. Si acaba de utilizar el programa Bloc de notas que viene con cada Windows, bueno, digamos que no es particularmente bueno.

Considere algo más moderno, por ejemplo, Notepad ++. Entre muchas mejoras, puedo garantizar personalmente que puede abrir archivos que son muy grandes (lo probé personalmente con archivos de 1 GB) y aún así trabajar con ellos bastante bien.

Oh si puede. También puede abrir un archivo de texto de 100 GB y mostrarlo (lentamente).

Sin embargo, para que esto suceda, el editor de texto debe estar escrito de una manera muy específica.

Y su editor de texto no fue escrito para manejar archivos grandes.

Cambia a otro editor.

Sospecho que está utilizando un editor de texto mal programado. No puedo recomendarte uno sin saber qué sistema operativo estás ejecutando, pero te sugiero que pruebes uno que esté destinado a ser utilizado por programadores. Hay editores de texto disponibles para todas las principales plataformas informáticas que no tendrán problemas para abrir un archivo de texto de 100 MB.

Además, hay editores de texto capaces de abrir archivos de 8GB en dispositivos con 512MB de RAM, si no menos. Solo necesita un poco de espacio libre adicional en el disco para, ya sabes, rastrear los cambios.

Para que esta respuesta sea una respuesta completa, también repetiré lo que los otros ya han dicho: depende del editor, y hay algunos que pueden abrir archivos de hasta una pequeña fracción de la RAM disponible. El Bloc de notas no es bueno para trabajar con archivos de gran tamaño.

Ejecute su archivo en notepad ++ después de borrar la carpeta temporal.

Para hacer eso

Ir

Inicio> ejecutar> o win + R y escriba% temp% y elimine todas las carpetas y archivos.

Espero que funcione

No es tu computadora. Intente usar un programa de Word diferente, OpenOffice o Libre Office, si tiene Microsoft Office, es posible que no abra archivos de texto.

Otra opción es usar GitHub. Cargue el archivo y edítelo desde allí o véalo, será público, pero puede eliminar el respo una vez hecho …

No todos los editores de texto son capaces de manejar archivos grandes. El Bloc de notas en particular tiene un problema con ellos. Yo uso Vim para cualquier archivo grande.

Todo depende de las otras especificaciones de su computadora y también depende de qué más se está ejecutando, eso es más que suficiente memoria para ejecutarlo, pero depende de cuánto se está utilizando y cuáles son sus otras especificaciones y eso decidirá el responder

Usa Emacs; esa es básicamente la respuesta a la mayoría de los problemas de la humanidad.

No era la computadora la que no podía manejarlo. Fue el editor de texto.

More Interesting

Cuál sería un buen grabador de pantalla para GeForce 940mx Tengo OBS y tengo una experiencia realmente mala con él. ¿Algún otro software gratuito que pueda ayudar?

Cómo detener la aplicación de instalación automática

¿Cuáles son los mejores programas de gestión de proyectos para contratistas?

¿Cuál es el mejor software de copia de Blu-Ray para OS X?

¿Qué es el secuestro del navegador?

¿Cuántas horas productivas (codificación) por día puede esperar obtener, en promedio, de un ingeniero de software? Paso bastante tiempo investigando, diseñando y refactorizando, en lugar de simplemente "crear código".

¿La gente realmente paga por los softwares?

¿Cuáles son los mejores softwares gratuitos para la empresa mayorista y de distribución?

¿Qué es importante al crear una aplicación por primera vez? ¿Qué deberías / no deberías incluir? ¿Cuánto costaría la programación para una aplicación avanzada?

¿Deben usarse AWS o App Engine para una aplicación de video? Después de que se crea una aplicación, ¿hay algo que tenga que gestionar en el lado de back-end? Entiendo que podría haber errores y fallas, pero ¿funcionará correctamente una vez que se complete la compilación?

¿Se bloqueó mi disco duro cuando se instalaron aplicaciones de procesamiento pesado como bluestack, durante el tiempo de la pantalla emergente de advertencia de falla del disco duro?

¿Qué es un software de gestión de activos que me permitirá rastrear hardware y software?

¿Qué servicio puedo usar para aceptar pagos de licencia de software?

¿Existe algún software que amplíe y detecte rostros humanos en los videos?

¿Existe algún costo para construir y mantener una aplicación que no sea el pago del desarrollador? ¿Puedo encontrar detalles sobre este costo en alguna parte?