Если в switch много case, то не выгоднее ли сделать массив с адресами, на которые будет переходить управление? Можно делать массив из указателей на функции, но это все-таки функции. Есть ли нечто подобное для произвольных точек кода?
Goto - весьма опасная вещь. Ими можно пользоваться, если знаешь, что делаешь. Иначе это может привести к непредсказуемым последствиям: от потери производительности до серьёзных проблем с безопасностью. По мере возрастания сложности структуры программы можно легко запутаться в goto или потерять его. Таким лучше пользоваться только в ассемблере, который называется ещё jump (jmp, br в зависимости от производителя). А так лучше пользоваться switch. Достаточно простой и практичный.
Евгений Обыкновенный: обычно небольшие switch разворачиваются в cmp, большие - в таблицу прыжков. ну и ещё от компилятора зависит, встречал 10-килобайтный свич, развернутый через сравнения