В ББ проверка типаIF obj IS T THEN...выполняется очень быстро, примерно за 3 такта.

Тип можно выяснить ещё чуточку быстрее.

Для начала пусть программа не модульная. В немодульной программе количество типов есть величина постоянная известная на момент компиляции. Поэтому компилятор может все типы перенумеровать -- присвоить каждому типу целое число. Тогда во время работы программы для выяснения типа надо будет сравнить не две переменных друг с другом

IF obj.tag.TD[lev] = ADR(TD(T)) THEN ...,

а одну переменную с константой.

Например, если тип T во время компиляции получил номер 123 и находится он на 4-ой глубине наследования, то инструкция IF obj IS T THEN... может быть скомпилирована в такую:

IF obj.tag.level4 = 123 THEN ...

В модульных системах того же эффекта можно добиться если компилировать динамически подгружаемые модули "на лету".

-------------

Ещё можно делать быстрое переключение по нерасширяемым (sealed, final) типам:

## Код:
```
CASE obj.tag.id OF
  2: (* ... *) |
  5: (* ... *) |
  6: (* ... *) |
END
```

здесь 2, 5, 6 -- номера этих типов.