Кажется очевидным, что при реализации текстового редактора общего назначения (например, я имею в виду, например, что он не должен обрабатывать огромные файлы (более 100-200 МБ (чего еще много, и больше как крайний пример «общего случая»)), невозможно просто сохранить текст в одном непрерывном длинном буфере, потому что производительность будет всасывать вставки/удаления.Внутренний текстовый редактор текстового редактора: оптимальный размер блока?
Хотя существует ряд способов все это связано с тем, что вы должны разделить текст на куски, и поэтому мой вопрос: учитывая сегодняшнюю мощность компьютера, каков будет оптимальный размер блока? Каков фактический размер текстового буфера, который является практически начинает становиться слишком большим для хранения в простом непрерывном буфере? Насколько быстрыми являются современные компьютеры при перемещении больших кусков байтов? (Для наглядности давайте просто скажем, что щелевые буферы не могут быть использованы, каждый кусок будет простой непрерывный массив.)
Как и я писал, существует множество структур данных, которые могут эффективно справляться с этим, и все они (да, веревки тоже) имеют «размер куска» в своих реализациях. Единственная альтернатива - сделать, чтобы каждый сегмент веревки содержал только один символ/элемент, и я не могу представить, чтобы какая-либо реализация была неэффективной. Конечно, когда вы берете существующую библиотеку, вы не задумываетесь об этих деталях. Но я хотел знать, каков оптимальный размер блока для собственной реализации на низком уровне. – Cray
Чтобы уточнить, возможно, что в веревке нет «заданного» размера листа, и все это динамично, но в конечном итоге веревка должна будет перебалансироваться, и произойдет некоторое перемещение памяти, перераспределение и т. Д. В этих контексты, размер куска также важен. – Cray