由于编译器的优化,switch语句通常比等效的if-else- if语句(如本文中所述)要快。
这种优化实际上是如何工作的?有人有很好的解释吗?
编译器可以在适用的情况下构建跳转表。例如,当您使用反射器查看生成的代码时,您会看到对于字符串上的大量开关,编译器实际上将生成使用哈希表调度这些代码的代码。哈希表使用字符串作为键,并将case代码委托为值。
case
它比许多链式if测试具有更好的渐近运行时间,并且即使相对较少的字符串,实际上也更快。
if