Диспетчеризация

Является промежуточным процессом (между вызовом метода и обработкой метода), который сообщает центральному процессору, где находится в памяти исполняемый код, для вызова какого то конкретного метода.

Methods Dispatch

Direct Dispatch

Самый быстрый способ отправки метода, этот способ называются статической диспетчеризацией, фишка быстроты заключается в том, что методы не могут быть переопределены.

Все, что Value Type используется статическую диспетчеризации.

Но к сожалению в нем нет принципов ООП (наследование и все, что от нее происходит).

Table Dispatch

Virtual Table

Стандартный метод диспетчеризации для reference типов(очевидно ведь там необходимо наследование). Во время компиляции создается таблица поиска, которая указывает на фактическую реализацию метода. А во время runtime эта таблица является массивом адресов, где находится сама реализация.

Заметно ниже по скорости чем Direct Dispatch.

Witness Table

Используется для реализации протоколов и для каждого класса реализовавшего протокол Главный минус такой же как и у Virtual Table - это скорость, а так же отсутсвие наследования