compilatori Ottimizzazione (tra cui GCC) saranno compilare un'istruzione switch in una tabella di salto (fare una dichiarazione interruttore esattamente veloce come la cosa si sta cercando di costruire) se sono soddisfatte le seguenti condizioni:
tuo interruttore i casi (numeri di stato) iniziano da zero.
Le custodie degli interruttori sono in costante aumento.
Non si salta alcun numero intero nelle proprie custodie.
ci sono abbastanza casi che una tabella salto è effettivamente più veloce (un paio di dozzine confrontare-e-goto nel metodo di controllo-ogni-caso di trattare con istruzioni switch è in realtà più veloce di un tavolo salto.)
Questo ha il vantaggio di permetterti di scrivere il tuo codice in C standard invece di basarti su un'estensione del compilatore. Funzionerà altrettanto velocemente in GCC. Funzionerà altrettanto velocemente nella maggior parte dei compilatori ottimizzanti (so che il compilatore Intel lo fa, non sono sicuro delle cose di Microsoft). E funzionerà, anche se più lentamente, su qualsiasi compilatore.
fonte
2016-04-16 18:25:18
Se si tratta di un compito a casa, non ti consiglio di andare in questo modo - al tuo professore non piacerebbe. – qrdl
no non lo è, ho diciassette anni e sto provando a scrivere un semplice tokenizzatore veloce. Ho pensato di accelerare in questo modo. –
Nei commenti in basso si menziona che potrebbero esserci 2 ** 16 casi. Sarà questa la norma? Se è così, cambia drasticamente il problema. –