То є так.
Наприклад, якщо case'и можуть бути тільки послідовними цілими в інтервалі [0..MAX],
тоді табличний метод виправданий практично завжди, якщо MAX>3 (орієнтовно).
Наприклад, при перекодуванні ASCII-тексту однозначні переваги табличного методу "гілкування".
Якщо ж case'и мають не послідовні значення (ак у темі цього топіка), тоді доцільність табличного метода
знижується, й "тупий" метод <cmp+jnz> сповна має право на використання.
..До речі, у Сі-компілятора є ключі компіляції "за розміром" або "за швидкістю".
Значною мірою це стосується способу реалізації switch'ів.
Дійсно, файл із таблицею переходів буде більшим завдяки додатковим таблицям,
але виконання переходів буде швидшим
(але не завжди, а тільки якщо case'ів більше, ніж якесь порогове число.
Завдання компілятора це число знайти та прийняти рішення про метод реалізації switch'ів).
У аттачі два EXE-файли, отримані трансляцією зразка у стартовому пості теми,
- відтрансльовані один з таблицями переходів, інший без них.
Розмір порівняти можна, швидкість роботи порівняти можна тільки теоретично.
..Але, потестувавши фрагмент із переходами окремо, можна сказати,
що у даному конкретному випадку конструкція з таблицею переходів
(30 case'ів та їхні рандомні значення не з діапазону [1..30]) -
ця конструкція буде працювати разів у п'ять повільніше, ніж простий варіант перебору <cmp+jnz>.
Тут маємо 30 case'ів, - тому, щоб отримати переваги від застосування
табличного методу, треба мати більше, ніж 200 case'ів.
І тому у зразку коду зі стартового посту теми сміливо замінюємо використання макро case/switch
серією порівнянь <cmp+jnz>, й усе буде працювати гарно.
.