compilateurs Optimisation (y compris GCC) compileront une instruction switch dans une table de saut (faire une instruction switch exactement aussi vite que la chose que vous essayez de construire) si les conditions suivantes sont réunies:
Votre commutateur cas (numéros d'état) commencent à zéro.
Vos boîtiers de commutateur sont en augmentation stricte.
Vous ne sautez aucun entier dans vos commutateurs.
Il y a suffisamment de cas qu'une table de saut est plus rapide (une douzaine de couple compare-et-GOTO dans la méthode de contrôle-chaque cas de traitement des déclarations de commutation est plus rapide qu'une table de saut.)
Cela a l'avantage de vous permettre d'écrire votre code en C standard au lieu de s'appuyer sur une extension de compilateur. Cela fonctionnera aussi rapidement dans GCC. Il fonctionnera aussi rapidement dans la plupart des compilateurs optimisateurs (je sais que le compilateur Intel le fait, pas sûr de Microsoft). Et cela fonctionnera, bien que plus lentement, sur n'importe quel compilateur.
Si c'est un devoir, je ne vous recommande pas d'aller de cette façon - votre professeur ne l'aimerait pas. – qrdl
non ce n'est pas, j'ai dix-sept ans et j'essaie d'écrire un tokenizer simple et rapide. J'ai pensé à l'accélérer de cette façon. –
Vous mentionnez dans les commentaires ci-dessous qu'il peut y avoir 2 ** 16 cas. Est-ce que ce sera la norme? Si c'est le cas, cela change radicalement le problème. –