gpt4 book ai didi

c - if-else 或 switch-case 的最快替代方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:34 24 4
gpt4 key购买 nike

我有以下定义:

typedef enum
{
def = 0,
m1 = 1,
m2 = 2,
m3 = 4,
m4 = 6,
m5 = 17,
m6 = 33,
m7 = 41,
m8 = 47,
m9 = 50,
m10 = 51,
m11 = 58,
m12 = 89,
m13 = 132,
m14 = 135
} my_enums;

我正在寻找一种最快的方法来检查函数的参数是否属于这些值之一,m1..m14。显而易见的实现是 if (p == m1 || p == m2 ...) 或 switch-case 替代方案。

有没有更快的东西? m1~m14的值是固定的,不能连续。

谢谢。

最佳答案

switch 语句是更好的选择。它有助于了解编译器可以用来使 switch 语句非常优化(在大多数情况下)的技巧。很多时候,比您自己想出的要好。

如果值不连续,编译器可以求助于具有 O(log(n)) 性能的静态二叉决策树。对于一个连续的值列表,它会构造一个跳转表,其复杂度为O(1)。相比之下,if-else 结构的复杂度为 O(n)。

我建议您在求助于其他方法之前充分了解可以从 switch 语句中得到什么。

关于c - if-else 或 switch-case 的最快替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com