3 ms·
Noob question probably, but wouldn't an Enum Map or something similar be more efficient?
by ir123 6y ago
Noob question probably, but wouldn't an Enum Map or something similar be more efficient?
- hn_acc_2 6y agoIt depends on your compiler. But as a general rule, the programmer will have a hard time "outsmarting" the compiler by using different objects or abstractions. Compiler authors have spent many hundreds of combined hours making C code run as fast as possible, and optimizing the switch statement is something they've most certainly done to death. I.e. if your control flow is switch-case-like, use a switch-case.
- Jasper_ 6y agoNot always. Computed gotos can be faster, because it can relax some restrictions that the switch statement can't amke. Most VM implementations, including CPython, use computed gotos for a not insignificant performance improvement. https://github.com/python/cpython/blob/master/Python/ceval.c#L967-L1004 https://github.com/python/cpython/blob/master/Python/ceval.c...
- anon946 6y agoFor more than a few cases in the switch: If the case values are dense (such as just the integers from 0 to 9), the compiler will turn it into a jump table. https://godbolt.org/z/1Khahr https://godbolt.org/z/1Khahr If too sparse for jump table, then typically will be turned into a binary search tree.