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.