четверг, 9 июля 2015 г.

ToDo. Сделать кеширование компилированного кода словарей

ToDo. Сделать кеширование компилированного кода словарей

Для каждого элемента USES или INCLUDE.

Держать в памяти скомпилированный образ  словаря.

В мапе "ключ-значение".

Где:

 ключ - имя файла.
 значение - скомпилированный код.

Ну и понятное дело, что надо контроллировать дату компиляции и дату файла словаря.

И вычищать скомпилированный код если даты не совпадают.

Ну и понятно, что надо держать карту связей между словарями.

И если сбрасываются ИСПОЛЬЗУЕМЫЕ словари, то сбрасывать и ИСПОЛЬЗУЮЩИЙ.

Ну и понятно, что в KeywordByName надо просматривать ВСЕ словари.

Ну и UserDictionary должен "скользить" по "вложенным словарям".

Но сначала сделать вот это:

ToDo. Избавиться от [EXECUTE]

(+) Сделать директиву %ClearCache.
(+) В тестах GenXX грузить модель не в "основной код", а в словари "сбоку". Типа CompileScriptAndProcess. Тут надо ДУМАТЬ. Про РАЗДЕЛЯЕМЫЕ типа UIDS_LIST etc.

Ну и ещё.

На чём всё это основано?

А вот на чём:
Собственная реализация IUnknown и подсчёт ссылок. И примеси

БЕЗ подсчёта ссылок вся эта затея обречена была бы на неудачу. Лезли бы всякие AV И прочие assert и Invalid Point Operation.

Не говоря уж о скрытых ошибках когда объект "вроде умер", но "вроде ещё живёт".

1 комментарий: