|
Apr. 27th, 2017|07:47 am |
то есть, ты не тупишь, ты абсолютно прав: я просто продал немного памяти за быстродействие. сейчас у меня там кэш, в котором хранится смещение до начала строки от начала текста. поиск O(log n), но медленное обновление. и плохо ложится в выделение памяти фиксироваными страницами.
а b+ — это почти то же самое, только список получается побит на части, и с частями можно работать отдельно. поиск чуть медленней (теперь там хранятся длины, и надо прощёлкать всю страницу линейно), но зато самортизировалось обновление, да ещё и в страницы ложится как родное.
потому финальная идея такая, чтобы все выделения памяти в редакторе шли строго постранично, для всего вообще. чтобы я нахрен прекратил думать о фрагментации памяти как таковой. понятно, за это я заплачу тем, что некоторые страницы будут использоваться не полностью, но ок, меня устраивает. зато есть другие преимущества — типа того, что не нужно будет делать memcpy() на 210MB+210*2MB данных, если надо подвинуть дырку вставки из конца в начало. |
|