Техника оптимизации под линуха

Балансировка логического древа


Если отвлечься от устоявшейся идиомы "оператор SWITCH дает специальный способ выбора одного из многих вариантов, который заключается в проверке совпадения значения данного выражения с одной из заданных констант в соответствующем ветвлении", легко показать, что switch представляет собой завуалированный оператор поиска соответствующего case-значения.

Последовательный перебор всех вариантов, соответствующий тривиальному линейному поиску— занятие порочное и крайне неэффективное. Допустим, наш оператор switch выглядит так:

switch (a)

{

case

98 : /* код обработчика */ break;

case

4  : /* код обработчика */ break;

case

3  : /* код обработчика */ break;

case

9  : /* код обработчика */ break;

case



22 : /* код обработчика */ break;

case

0  : /* код обработчика */ break;

case

11 : /* код обработчика */ break;

case

666: /* код обработчика */ break;

case

96 : /* код обработчика */ break;

case

777: /* код обработчика */ break;

case

7  : /* код обработчика */ break;

}



Содержание раздела