stringtranslate.com

Amortiguador de huecos

Un buffer de espacio en informática es una matriz dinámica que permite operaciones de inserción y eliminación eficientes agrupadas cerca de la misma ubicación. Los buffers de espacio son especialmente comunes en editores de texto , donde la mayoría de los cambios en el texto ocurren en la ubicación actual del cursor o cerca de ella. El texto se almacena en un buffer grande en dos segmentos contiguos, con un espacio entre ellos para insertar texto nuevo. Mover el cursor implica copiar texto de un lado del espacio al otro (a veces, la copia se retrasa hasta la siguiente operación que cambia el texto). La inserción agrega texto nuevo al final del primer segmento; la eliminación lo elimina.

El texto en un buffer de espacio se representa como dos cadenas , que ocupan muy poco espacio adicional y que se pueden buscar y mostrar muy rápidamente, en comparación con estructuras de datos más sofisticadas como las listas enlazadas . Sin embargo, las operaciones en diferentes ubicaciones en el texto y las que llenan el espacio (lo que requiere que se cree un nuevo espacio) pueden requerir copiar la mayor parte del texto, lo que es especialmente ineficiente para archivos grandes. El uso de buffers de espacio se basa en el supuesto de que dicha copia ocurre con la suficiente poca frecuencia como para que su costo se pueda amortizar con respecto a las operaciones baratas más comunes. Esto hace que el buffer de espacio sea una alternativa más simple al string para su uso en editores de texto [1] como Emacs . [2]

Ejemplo

A continuación se muestran algunos ejemplos de operaciones con espacios en el búfer. El espacio está representado por el espacio vacío entre los corchetes. Esta representación es un poco engañosa: en una implementación típica, los puntos finales del espacio se rastrean mediante punteros o índices de matriz, y el contenido del espacio se ignora; esto permite, por ejemplo, realizar eliminaciones ajustando un puntero sin cambiar el texto en el búfer.

Estado inicial:

Esta es la salida.

El usuario inserta algún texto nuevo:

Así es como empezó el mundo.

El usuario mueve el cursor antes de "iniciado"; el sistema mueve "iniciado" del primer búfer al segundo búfer.

Así empezó el mundo.

El usuario añade texto rellenando el espacio vacío; el sistema crea un nuevo espacio vacío:

Así empezó el mundo tal como lo conocemos.

Véase también

Referencias

  1. ^ Mark C. Chu-Carroll. "Gap Buffers, or, Don't Get Tied Up With Ropes?" (Amortiguadores de espacio, o ¿no hay que atarse con cuerdas?) , ScienceBlogs , 18 de febrero de 2009. Consultado el 30 de enero de 2013.
  2. ^ Información del buffer gap de emacs. Consultado el 30 de enero de 2013.

Enlaces externos