Прежде всего надо определиться с концепцией использования форта.
В Нове в силу исторических причин

появилась концепция: "всё что нужно в основном словаре, всё вспомогательное во временных словарях, и после удаляется".
Такой подход вспомогательности привёл к нынешней в Нове архитектуре построения словаря.
Именно по этой причине изначально каждый словарь может иметь свой обработчик нераспознанных строк. А с недавнего времени и обработчик компиляции определений.
Пример последнего можно посмотреть в библиотеке поддержки лок. переменных (~er/locals/r-local.f)
Но сам подход предполагающий кучу вспомогательных словарей может сильно замедлить поиск. Естественно, из-за большего времени поиска слов.
Чтобы компенсировать это, поиск ведётся не по строке, а хешу от этой строки. В ходе философских бесед с mOleg я пришёл к выводу, что для ускорения трансляции неплохо подойдёт поиск по 4-м цепочкам, а не по 1-й.
Почему 4, а не 8 или 16?
Причина больше в целесообразности. Если цепочек 4, то на 100 слов в каждой в каждой цепочке будет 25. Но во всех вспом. словарях кол-во слов редко когда превышает 100. Если же цепочек будет больше, то некоторые из них будут пустовать. Можно, конечно, добить и более равномерного распределения, но тогда придётся переписывать слово для нахождения номера цепочки от хеша.
Сейчас код такой:
Код:
: VOC-TH 3 AND ; \ в ядре реализовано на ассемблере
Быстро, дёшево и сердито.
Поэтому 4 цепочки, по моему скромному мнению, оптимальный вариант.
В итоге скорость поиска выросла значительно,
если считать в тактах 
Также на скорость трансляции влияет и сами операции парсинга. Однако связанные с этим слова никак не улучшались, чтобы в будущем не потерять портируемость.
И раз коснулись портируемости, то поговорим и о ней.
Вначале в Нове использовался стековый манипулятор как а-ля высокоуровневый ассемблер, благо он им и был.
Использовался он для быстрого набора определений. Так на нём было написано слово COMPARE .
Помимо этого стековый манипулятор является неплохим DSL для написания участка кода, который будет использован 1 раз и сложновыражаем на форте.
К примеру в одном месте используется код для замены в строке всех символов, которые равны
n на символ
mСоотно, входные параметры n m addr u
Вот что вышло на манипуляторе: 3/B1&3..?(1&2..<)1i0dU
А теперь распишите это на форте.
Но ассемблерность манипулятора мешает его портируемости. По этому в ядре от него потихоньку избавляюсь. На данный момент осталось несколько мест, где он используется.
Как показывает скромная статистика в Нове с каждым обновлением количество слов становится всё меньше. Убираются в основном редкоиспользуемые слова, да и те переменные, которые на прямую использовать не нужно и/или не рекомендуется.
При этом переменные "остаются" в ядре, но не явно. Они существуют в словах, которые их используют.
Эти переменные де-юре и константы де-факто можно либо заменить, либо подменить на время. Хотя и синтаксиса для этого не предусмотрено, ибо требовалось аж 0 раз.