OberonCore
https://forum.oberoncore.ru/

Кэширование в TextModels.
https://forum.oberoncore.ru/viewtopic.php?f=23&t=6186
Страница 1 из 1

Автор:  Trurl [ Четверг, 30 Ноябрь, 2017 10:20 ]
Заголовок сообщения:  Кэширование в TextModels.

Причесывал я TextModels и что-то мне кэширование запутанным показалось. Попробовал удалить кеш совсем. Невооруженным взглядом вроде разницы не видно. Но интересно стало, сильно ли просела производительность? Так вот, замеры показывают, что без кэша даже быстрее, хотя разница в пределах ошибки измерений.

Автор:  Rifat [ Четверг, 30 Ноябрь, 2017 12:23 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

Что там кешировалось то?

Соответствие текущей позиции в тексте элементу piece table?
Если да, то разница может быть замента, если в документе было очень много редактирований (например, где-то вставили символ, удалили символ, вставили символ и т.д. и так 10000 раз, а текущая позиция находится после этих редактирований, тогда не надо будет проходить 10000 элементов списка, чтобы найти элемент, который соответствует текущей позиции).

Автор:  Trurl [ Четверг, 30 Ноябрь, 2017 12:43 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

Чтение. Вместо того, чтобы лезть в файл за каждым символом, ридер читал блоками по 4K.

Автор:  Valery Solovey [ Четверг, 30 Ноябрь, 2017 18:31 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

То есть, теперь ридер читает посимвольно быстрее, чем поблочно?

Автор:  Trurl [ Четверг, 30 Ноябрь, 2017 21:33 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

Ну, я тщательно не мерил, прикрутил таймер к компилятору и перекомпилировал систему несколько раз. Вроде, выходит чуть быстрее.
Чтобы понятнее было, о чем речь. Было:
Код:
PROCEDURE  Read;
  IF ~(pos in cache) THEN
    ...
    filereader.SetPos(filepos);
    filereader.ReadBytes(cache,cpos,clen);
   ...
  END;
  res:= cache[cpos]
END Read;

стало:
Код:
PROCEDURE  Read;
  filereader.SetPos(filepos);
  filereader.ReadByte(ch);
  res := ch;
END Read;

Автор:  Иван Денисов [ Пятница, 01 Декабрь, 2017 06:43 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

Может статься, что раньше чтение не кэшировалось самой ОС, а теперь наверняка кэшируется. Запись в файл точно кэшируется, если правильно помню то по 16КБ.

Автор:  Trurl [ Пятница, 01 Декабрь, 2017 12:39 ]
Заголовок сообщения:  Re: Кэширование в TextModels.

Так и сами файлы же буферизированные. То есть, кроме системного кеша, еще два своих.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/