由于编译器优化,Switch 语句通常比等效的 if-else-if 语句(如本 article 中所述)更快。
这种优化实际上是如何工作的?谁有好的解释?
最佳答案
编译器可以在适用的地方建立跳转表。例如,当您使用反射器查看生成的代码时,您会发现对于字符串上的巨大开关,编译器实际上会生成使用哈希表来调度这些的代码。哈希表使用字符串作为键,并将 case
代码作为值。
这比许多链式 if
测试具有更好的渐近运行时间,实际上即使对于相对较少的字符串也更快。
关于c# - 如果与开关速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461598/