Ñ òî÷êè çðåíèÿ ýôôåêòèâíîñòè î÷åâèäíî,
L1: statement_1 Êîìàíäû äëÿ statement_1
jump End_Case
L2: statement_2 Êîìàíäû äëÿ statement_2
jump End_Case
… Êîìàíäû äëÿ äðóãèõ îïåðàòîðîâ
End_Case:
Ñ òî÷êè çðåíèÿ ýôôåêòèâíîñòè î÷åâèäíî, ÷òî ÷åì áëèæå ê âåðõíåé ÷àñòè îïåðàòîðà ðàñïîëàãàåòñÿ àëüòåðíàòèâà, òåì áîëåå ýôôåêòèâåí åå âûáîð; âû ìîæåòå ïåðåóïîðÿäî÷èòü àëüòåðíàòèâû, ÷òîáû èçâëå÷ü ïîëüçó èç ýòîãî ôàêòà (ïðè óñëîâèè, ÷òî âû íå èñïîëüçóåòå «ïðîâàëû»!).
Íåêîòîðûå case-îïåðàòîðû ìîæíî îïòèìèçèðîâàòü, èñïîëüçóÿ òàáëèöû ïåðåõîäîâ. Åñëè íàáîð çíà÷åíèé âûðàæåíèÿ îáðàçóåò êîðîòêóþ íåïðåðûâíóþ ïîñëåäîâàòåëüíîñòü, òî ìîæíî èñïîëüçîâàòü ñëåäóþùèé êîä (ïîäðàçóìåâàåòñÿ, ÷òî âûðàæåíèå ìîæåò ïðèíèìàòü çíà÷åíèÿ îò 0 äî 3):
compute R1,expr
mult R1,#len_of_addr expr* äëèíà_àäðåñà
add R1 ,&table + àäðåñ_íà÷àëà_òàáëèöû
jump (R1) Ïåðåéòè ïî àäðåñó â ðåãèñòðå R1
table: Òàáëèöà ïåðåõîäîâ
addr(L1)
addr(L2)
addr(L3)
addr(L4)
L1: statement_1
jump End_Case
L2: statement_2
jump End_Case
L3: statement_3
jump End_Case
L4: statement_4
End_Case:
Çíà÷åíèå âûðàæåíèÿ èñïîëüçóåòñÿ êàê èíäåêñ äëÿ òàáëèöû àäðåñîâ îïåðàòîðîâ, à êîìàíäà jump îñóùåñòâëÿåò ïåðåõîä ïî àäðåñó, ñîäåðæàùåìóñÿ â ðåãèñòðå.