crypt of decay - кстати [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

кстати [Jan. 23rd, 2022|03:44 am]
Previous Entry Add to Memories Tell A Friend Next Entry
на самом деле технически редактор внутри работает с текстом, пожатым LZ. дерево-то хранит пары «смещение, длина», а текстовый буфер — append only. я этого делать не буду, но в принципе — можно при загрузке текста сразу делать с ним lz-сжатие. одна нода дерева весит чуть меньше сорока байт, так что если находить куски длиннее — оно даже будет экономить память. осмысленности, конечно, в этом никакой, потому что кейворды сильно короче.

зато есть бонус при копировании/перемещении текста: буфер-хранилище байтов при этом не растёт, потому что текст-то у нас там уже есть: редактор просто рихтует дерево кусков. то же самое справедливо для undo/redo: в лог сохраняются позиции удалённых/вставленых кусков.

недостаток тот, что байтовое хранилище никогда не усекается, даже если весь текст удалить. единственный вариант — это почистить буфер и заново туда текст загрузить (undo пропадёт, конечно). на практике этот недостаток совершенно неважен, удобства перекрывают.

(да, дерево достаточно умное для того, чтобы сливать ноды, если это возможно. так что печать кучи символов друг за другом породит одну ноду, а не толпу.)
Linkmeow!