“else if”比“switch() case”更快吗? [复制]

2024-01-05

我以前是 Pascal 人,目前正在学习 C#。 我的问题如下:

下面的代码是否比进行切换更快?

int a = 5;

if (a == 1)
{
    ....
}
else if(a == 2)
{
    ....
}
else if(a == 3)
{
    ....
}
else if(a == 4)
{
    ....
}
else
    ....

还有开关:

int a = 5;

switch(a)
{
    case 1:
        ...
        break;

    case 2:
        ...
        break;

    case 3:
        ...
        break;

    case 4:
        ...
        break;

    default:
        ...
        break;


}

哪一个更快?

我问,因为我的程序有类似的结构(很多很多“else if”语句)。 我应该把它们变成开关吗?


对于少数项目来说,差异很小。如果你有很多物品,你绝对应该使用开关。

如果一个开关包含五个以上的项目,则使用查找表或哈希列表来实现。这意味着所有项目都获得相同的访问时间,与 if:s 列表相比,其中最后一个项目需要更多时间才能到达,因为它必须首先评估每个先前的条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“else if”比“switch() case”更快吗? [复制] 的相关文章

  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • C++ 中 void(*)() 和 void(&)() 之间的区别[重复]

    这个问题在这里已经有答案了 在此示例代码中 func1是类型void int double and funky是类型void int double include
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include

随机推荐

  • 如何使用 Swift 创建带有 UITabBar 或 Segment Control 的 PageView?

    我对 iOS 还很陌生 我有一个问题 无法获得实施的确切想法 我在这里上传两个图像 所以请建议我如何使用 Swift 实现它 这是我的图像 在图像中 您可以看到对于单个 viewController 有两个选项卡 一个是 您的组 另一个是
  • 在 CLR 4.0 中加载/执行 CLR 2.0 程序集

    CLR 4 0 是否可以执行 CLR 2 0 IL 而无需重新编译源代码 这是一个好文章 http blogs msdn com clrteam archive 2009 06 07 in process side by side part
  • Tensorflow Keras 错误:未知的图像文件格式。需要 JPEG、PNG、GIF、BMP 之一

    我正在训练一个分类器 并确保所有图片都是 jpg 但仍然出现此错误 InvalidArgumentError 未知的图像文件格式 需要 JPEG PNG GIF BMP 之一 节点解码图像 解码图像 IteratorGetNext 操作 i
  • Swift 数组(重复:,计数:)行为

    为什么只有一个元素labels数组显示为子视图view 特别是当使用Array repeating count let labels Array repeating UILabel count 7 print labels count 7
  • 在应用程序之间发送信息

    再会 我有一个客户端应用程序 它将客户端打开的应用程序列表发送到服务器 它特别发送文件路径 文件名和主机名 我的问题是发送的数据在服务器接收时应该进行序列化和反序列化 我是 C 新手 所以我对序列化知之甚少 这是客户端 private Li
  • 如何获取客户/用户位置详细信息

    在我的应用程序中 我想跟踪客户端 用户位置以存储在数据库中 我正在使用此代码来获取用户 IP 地址 string VisitorsIPAddr string Empty if HttpContext Current Request Serv
  • Python 中从十六进制到补码

    有没有一种简单的方法可以在 python 中生成补码 例如 如果您采用十六进制值0x9E 我需要将其转换为0x61 我需要将二进制 1 替换为 0 将 0 替换为 1 感觉这个应该很简单 只需使用异或运算符 http docs python
  • 静态工具操作的静态类与静态结构?

    我需要创建一个仅包含静态方法的 工具 类或结构 对于具有 PHP 背景的人来说 结构实际上并不存在 我正在读这个为什么选择结构而不是类 https stackoverflow com questions 24232799 why choos
  • Javascript window.onload 无法在 iOS 强制门户/网络中工作

    我在 jsp 文件的标头中有这段代码 由于某种原因 它在桌面和移动浏览器上运行良好 但在 iOS 强制门户上 仅触发第一个警报 有谁知道为什么 我想到了 使用这个作品
  • REST API 中的查询参数可以是强制的吗[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个要求 规定必须有两个参数 其中一个代表日期 作为 GET URI 的一部分必须是强制性的 但这两个参数仅用于过滤目的 所以我的问题是 强
  • 禁用移动 Chrome 浏览器中的滑动手势

    移动版 Chrome IOS Android 有一个功能 如果您在屏幕的左侧或右侧边缘滑动 它会更改选项卡 我的网络应用程序使用滑动 而这个 功能 似乎只是妨碍 有办法禁用这个吗 不 没有办法禁用此手势 有一张请求该功能的票证位于https
  • JavaScript:递归查找树中元素的所有父级

    我有一棵这样的树 var datas tree name name1 tree name name2 name name3 name name4 tree name name5 name name6
  • 是否可以调整 PDFBOX 中的文本?

    PDFBOX API 中是否有任何功能可以使文本对齐 或者我们必须手动执行此操作 如果手动 那么如何使用java 其背后的逻辑 调整文本 这个较旧的答案 https stackoverflow com questions 19635275
  • iOS:reachabilityWithHostname YES,尽管它应该是NO

    我测试了不同的框架 例如 https github com tonymillion Reachability https github com tonymillion Reachability https github com Vertic
  • Commons Logging 优先级最佳实践

    这可能是一个纯粹主观的问题 如果没有组织试图标准化这个问题 但我的团队在这个问题上的挣扎比你想象的要多 我们使用 Apache Commons Logging 作为日志记录接口 并且我们的开发团队中优先级的使用通常不一致 例如 一些开发人员
  • 具有多参数的htaccess

    我正在尝试像这样重定向我的链接 我的链接 example com p users page 2我的网址应该是 example com users page 2 此时 我的 mod rewrite 正在处理 我的链接 example com
  • NSMutabledata byteswithnocopy 的问题[重复]

    这个问题在这里已经有答案了 我正在尝试编写代码来从 malloced 缓冲区创建 NSMutableData 我使用了 freewhendone YES1 创建 NSData 后访问缓冲区时出错 在下面代码中的 memset 中 2 mal
  • 从 List 获取具有特定属性最大值的记录[重复]

    这个问题在这里已经有答案了 可能的重复 LINQ 如何对集合中所有对象的属性执行 Max 并返回具有最大值的对象 https stackoverflow com questions 1101841 linq how to perform m
  • .htaccess 重写到默认语言文件夹?

    我的网站按语言分为几个文件夹 en index php about us php faq php fr index php about us php faq php etc 我想要一个重写规则 自动重写到en如果有人试图进入文件夹mydom
  • “else if”比“switch() case”更快吗? [复制]

    这个问题在这里已经有答案了 我以前是 Pascal 人 目前正在学习 C 我的问题如下 下面的代码是否比进行切换更快 int a 5 if a 1 else if a 2 else if a 3 else if a 4 else 还有开关