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

Создание таблицы переходов


Если значения ветвей выбора представляют собой арифметическую прогрессию (см.листинг 27), компилятор может сформировать таблицу переходов – массив, проиндексированный case-значениями и содержащий указатели на соответствующие им case-обработчики. В этом случае, сколько бы оператор switch ни содержал ветвей, – один или миллион – он выполняется за одну итерацию. Красота!

switch (a)

{

case

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

case

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

case

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

case

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

case

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

case

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

case

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

case

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

case

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

case

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

case

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

}



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