FuncionesPreciosDocumentaciónBlog
Obtener mote
← Blog
Ingeniería·5 de julio de 2026·4 min de lectura

Por qué escribir no se vuelve más lento aunque el documento crezca

En una nota breve, cualquier editor es rápido. La diferencia aparece cuando el documento se alarga, y depende de si el coste de una sola tecla crece en función del tamaño de la edición o del tamaño del documento.

m
mote
Dos líneas medidas tras introducir 300 teclas en un documento de 100 KB. Se mide por separado el momento en que el núcleo termina la edición, el reanálisis y la decoración (p95 de 0,44 ms), y el momento en que el resultado aparece en pantalla (p95 de 3,32 ms).
Dos líneas medidas tras introducir 300 teclas en un documento de 100 KB. Se mide por separado el momento en que el núcleo termina la edición, el reanálisis y la decoración (p95 de 0,44 ms), y el momento en que el resultado aparece en pantalla (p95 de 3,32 ms).

Una nota breve se escribe rápido con cualquier editor. La diferencia se hace evidente cuando el documento se alarga.

Si cada vez que pulsas una tecla se vuelve a leer todo el documento y se reorganiza la pantalla, la escritura también se ralentiza a medida que el documento crece. Por eso un editor que funcionaba bien con una nota de diez líneas puede resultar frustrante con un documento de diseño de dos mil líneas.

mote no consideró este problema una cuestión de rendimiento que pudiera corregirse más adelante. Lo estableció desde el principio como un principio de diseño que debía respetarse.

Al editar, solo se vuelve a leer y organizar el intervalo modificado. El documento entero solo se relee al abrir el archivo.

Solo vuelve a leer la parte modificada

En Markdown, una línea anterior puede cambiar el significado de una línea posterior. Si se abre un bloque de código al principio del documento, todo el contenido que sigue puede convertirse en código, y una misma frase se interpreta de forma distinta dentro de una lista o de una cita.

Por eso mote recuerda los «puntos seguros» en los que se sabe con certeza que termina la influencia de lo anterior. Cuando se produce una edición, comienza a leer desde el punto seguro más cercano y se detiene en cuanto el contenido vuelve a estabilizarse.

Los bloques posteriores no se vuelven a leer. Si el número de líneas ha aumentado o disminuido, solo se cambia su posición. Así, el coste depende del intervalo realmente modificado, no del documento completo.

El analizador sigue el algoritmo línea por línea de CommonMark y supera las 652 pruebas de la especificación. Sin embargo, es fácil que el procesamiento incremental se equivoque sin hacer ruido. Por eso se aplican 3.600 ediciones aleatorias a documentos aleatorios y, después de cada una, el resultado se compara con el obtenido al volver a leer el documento entero.

Esta prueba también encontró un error real. Ocurría cuando el punto seguro coincidía exactamente con la línea editada.

Los principios de rendimiento se protegen mediante pruebas

El objetivo es que el procesamiento del núcleo termine con un p95 de 4 ms después de pulsar una tecla. Si supera ese tiempo, no se considera una tarea de mejora, sino un error.

Las reglas tampoco se limitan a quedar escritas en un documento. Una prueba automática comprueba que el reanálisis completo solo se utilice al abrir un archivo. También impide que se ejecuten temporizadores repetitivos o tareas de fotogramas cuando el editor está inactivo.

El rendimiento tampoco se evalúa a simple vista. El arnés introduce teclas en la pantalla real y mide la distribución de los tiempos de procesamiento. Se observa el p95 en lugar de la media o la mediana. Esto se debe a que lo que frustra al usuario no es tanto la velocidad habitual como los retrasos prolongados que aparecen de vez en cuando.

Para las mediciones se utiliza siempre el mismo documento fijo.

Pantalla del documento fijo doc100k.md que utiliza el arnés, abierto en modo en vivo. La línea de estado muestra 96.513 caracteres y un tiempo de lectura de 103 minutos.
Pantalla del documento fijo doc100k.md que utiliza el arnés, abierto en modo en vivo. La línea de estado muestra 96.513 caracteres y un tiempo de lectura de 103 minutos.

La pantalla también cambia solo lo necesario

No bastaba con hacer incremental únicamente el analizador.

El resaltado de sintaxis de los bloques de código volvía a procesar todos los bloques con cada edición. Era la última operación que se ralentizaba a medida que crecía el documento, independientemente del tamaño de la edición.

Ahora se reutiliza sin cambios el resaltado de sintaxis de los bloques que no se han modificado. Los bloques posteriores a la edición solo cambian de posición en función de la variación del número de líneas.

Los bloques que están fuera de la pantalla no se maquetan. Esto se debe a que, para mantener la velocidad incluso en documentos largos, hay que reducir tanto el intervalo que se vuelve a leer como el que se vuelve a dibujar.

También hay excepciones

Hay ocasiones en las que es necesario volver a procesar el documento entero.

Sucede al abrir un archivo o cuando cambia el formato de los saltos de línea. Si se modifica una definición de referencia de enlace, cualquier enlace del documento puede cambiar, por lo que el intervalo de actualización de la pantalla también se amplía a todo el documento.

Aunque el núcleo sea rápido, la pantalla necesita tiempo para esperar al siguiente fotograma. En una pantalla de 60 Hz, el propio intervalo entre fotogramas se convierte en el límite. Por eso se miden por separado el tiempo de procesamiento del núcleo y el tiempo transcurrido hasta que el resultado aparece realmente en pantalla, y ambas cifras no se colocan en el mismo eje. Esa es la razón por la que las dos líneas de la portada son diferentes.

Un editor rápido no es un editor que lo hace todo deprisa.

Es un editor que no hace lo que no necesita hacer.

← AnterioresPor qué dejamos el renderizado del texto en manos de la plataformaMás recientes →Definimos las reglas de Enter para que los párrafos se vean igual en otras herramientas
Siga las novedades por RSS.
Que solo quede la escritura.
Español
© 2026 mote