ToDo. Компилировать U$ ссылкой на переменную, а не вызовом на код, вычисляющий эту переменную.
Вместо:
Сделать:
Так наиграю несколько на производительности.
C %UID кстати можно подобное же сделать.
Хотя там есть уже вычисленная переменная:
А %TARGET можно сделать ссылкой на ссылку. А не алиасом, тогда в нём можно будет менять значение "на лету".
Вместо:
WORDWORKER U$ VAR l_S WordToWork DO =: l_S @ UIDS_LIST ->^ l_S DO // - вычисляем значение ; // - преобразование идентификатора элемента собственно к элементу
Сделать:
VOID IMMEDIATE operator U$ ^L aName STRING VAR l_S aName DO >>> l_S @ UIDS_LIST ->^ l_S CompileValue // - компилируем ссылку ; // - преобразование идентификатора элемента собственно к элементу
Так наиграю несколько на производительности.
C %UID кстати можно подобное же сделать.
Хотя там есть уже вычисленная переменная:
IMMEDIATE VOID CALLER operator %UID ^ IN anUID VAR l_S anUID DO =: l_S // - получаем имя (значение) UID VAR l_VAR @ UIDS_LIST ->^ l_S >>> l_VAR // - добавляем переменную и снимем её со стека Caller -> %U := l_VAR // - добавляем элементу переменную, указывающую на его UID l_VAR ^:= Caller // - присваиваем в переменную с UID ссылку на сам элемент ; // - идентификатор элемента
А %TARGET можно сделать ссылкой на ссылку. А не алиасом, тогда в нём можно будет менять значение "на лету".
Сделано.
ОтветитьУдалитьСильно на скорость не повлияло.
Удалить