c# - 如果与开关速度

标签 c# performance switch-statement if-statement

由于编译器优化,Switch 语句通常比等效的 if-else-if 语句(如本 article 中所述)更快。

这种优化实际上是如何工作的?谁有好的解释?

最佳答案

编译器可以在适用的地方建立跳转表。例如,当您使用反射器查看生成的代码时,您会发现对于字符串上的巨大开关,编译器实际上会生成使用哈希表来调度这些的代码。哈希表使用字符串作为键,并将 case 代码作为值。

这比许多链式 if 测试具有更好的渐近运行时间,实际上即使对于相对较少的字符串也更快。

关于c# - 如果与开关速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461598/

相关文章:

c# - 与时间无关的日期列表

javascript - 使用 switch 语句来处理 irc 服务器代码会很荒谬吗?

c# - .NET Core 中的 MethodInfo ReflectedType

javascript - C#:使用 Marionette 驱动程序选择下拉项

android - 保持 View 实例处于 Activity 状态还是每次都获取它?

sql-server - 我应该如何估计 SQL Server 2005 数据库的硬件要求?

performance - 如何获得 Intel Xeon E5-2690 GFlop/s 的峰值性能?

c - 如何在C中使用getchar读取单个字符?

javascript - 我想向我的 switch 语句添加更多选项。有什么方法可以实现这一点吗?

c# - 解码 PEM (c#)