相关疑难解决方法(0)

在C#中使用if/else和switch-case之间是否有任何显着差异?

在C#中使用switch语句与使用语句的好处/缺点是什么?if/else我无法想象除了你的代码外观之外还有其他重大差异.

是否有任何理由导致生成的IL或相关的运行时性能完全不同?

相关:什么是更快,打开字符串或elseif类型?

.net c# switch-statement

209
推荐指数
8
解决办法
7万
查看次数

为什么切换比如果更快

我在java中发现很多书说switch语句比if语句更快.但我没有找到说明为什么开关比如果更快的地方.

我有一种情况我必须选择两个中的任何一项我可以使用以下任一方式

switch(item){

case BREAD:
     //eat Bread
break;
default:
    //leave the restaurant

}
Run Code Online (Sandbox Code Playgroud)

或使用if语句如下

if(item== BREAD){
//eat Bread
}else{
//leave the restaurant
}
Run Code Online (Sandbox Code Playgroud)

考虑项目和BREAD是常量int值

在上面的例子中,哪个更快,为什么?

java switch-statement

106
推荐指数
3
解决办法
7万
查看次数

案例与其他案例如果:哪个更有效率?

可能重复:
"else if"比"switch()case"快吗?
Java中if/else与switch的相对性能是什么?

我已经在运行中进行编码....当调试器逐步执行case语句时,它会立即跳转到与条件匹配的项,但是当使用if/else指定相同的逻辑时,它会逐步执行每个if语句直到它找到胜利者.case语句是否更有效,或者我的调试器只是优化了一步?(不要担心语法/错误,我在SO中键入它,不知道它是否会编译,它的原理我之后,我不想做它们作为int因为我依稀记得一些关于使用带有整数的偏移的情况)我使用C#,但我对编程语言的一般答案感兴趣.

switch(myObject.GetType()){

    case typeof(Car):
        //do something
        break;

    case typeof(Bike):
        //do something
        break;

    case typeof(Unicycle):
        //do something
        break;

    case default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

VS

   Type myType = myObject.GetType();

   if (myType == typeof(Car)){
            //do something
   }

   else if (myType == typeof(Bike)){
            //do something
   }

   else if (myType == typeof(Unicycle)){
            //do something
   }
   else{

   }
Run Code Online (Sandbox Code Playgroud)

performance if-statement switch-statement

59
推荐指数
3
解决办法
17万
查看次数

你会如何尽可能快地制作这个切换声明?

2009-12-04更新:有关在此处发布的一些建议的分析结果,请参阅下文!


问题

考虑以下非常无害,非常简单的方法,它使用switch语句返回定义的枚举值:

public static MarketDataExchange GetMarketDataExchange(string ActivCode) {
    if (ActivCode == null) return MarketDataExchange.NONE;

    switch (ActivCode) {
        case "": return MarketDataExchange.NBBO;
        case "A": return MarketDataExchange.AMEX;
        case "B": return MarketDataExchange.BSE;
        case "BT": return MarketDataExchange.BATS;
        case "C": return MarketDataExchange.NSE;
        case "MW": return MarketDataExchange.CHX;
        case "N": return MarketDataExchange.NYSE;
        case "PA": return MarketDataExchange.ARCA;
        case "Q": return MarketDataExchange.NASDAQ;
        case "QD": return MarketDataExchange.NASDAQ_ADF;
        case "W": return MarketDataExchange.CBOE;
        case "X": return MarketDataExchange.PHLX;
        case "Y": return MarketDataExchange.DIRECTEDGE;
    }

    return MarketDataExchange.NONE;
}
Run Code Online (Sandbox Code Playgroud)

我和我的同事今天就如何更快地实现这个方法的几个想法进行了斗争,并且我们想出了一些有趣的修改,实际上相当显着地提高了它的性能(当然,按比例说).我有兴趣知道那里的其他人可以想到哪种优化可能没有发生在我们身上.

接下来,让我简单地提供一个快速免责声明:这是为了好玩 …

c# optimization switch-statement

33
推荐指数
6
解决办法
4531
查看次数

切换vs if语句

我处于两难境地.哪个最好用,为什么..切换或如果?

switch ($x) 
{
case 1:
  //mysql query 
  //echo something
  break;
case 2:
  //mysql query 
  //echo something
  break;
}
Run Code Online (Sandbox Code Playgroud)

...

if ($x == 1) {
    //mysql query 
    //echo something    
} 

if ($x == 2) {   
    //mysql query 
    //echo something
}  
Run Code Online (Sandbox Code Playgroud)

php conditional if-statement switch-statement

19
推荐指数
4
解决办法
2万
查看次数

"if"与"switch"

可能重复:
"else if"比"switch()case"快吗?

我最近遇到很多情况,我的条件非常简单,需要分支应用程序流程.完成我正在做的事情的"最简单"的方法只是一个简单的陈述if/ elseif声明:

if($value == "foo") {
    // ...
} elseif($value == "bar") {
    // ...
} elseif($value == "asdf" || $value == "qwerty") {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

......但我也在考虑这样的事情:

switch($value) {
    case "foo":
        // ...
        break;
    case "bar":
        // ...
        break;
    case "qwer":
    case "asdf":
        // ...
}
Run Code Online (Sandbox Code Playgroud)

这似乎有点不太可读,但也许它的性能更高?但是,当条件中有越来越多的"或"表达式时,似乎switch语句更具可读性和实用性:

switch($value) {
    case "foo":
        // ...
        break;
    case "bar":
    case "baz":
    case "sup":
        // ...
        break;
    case "abc":
    case "def":
    case "ghi":
        // ...
        break;
    case …
Run Code Online (Sandbox Code Playgroud)

php branch if-statement switch-statement

14
推荐指数
2
解决办法
1万
查看次数

case-statement或if-statement效率视角

可能重复:
"else if"是否比"switch()case"更快?
Java中if/else与switch语句的相对性能差异是什么?

我知道case语句可以用跳转表来实现.这是否比if语句更有效?

这只是应该避免的微观优化吗?

java performance if-statement case-statement

11
推荐指数
1
解决办法
2万
查看次数

如果函数中的语句是最好的方法

如果我有一个具有大量条件的功能,那么组织它的最佳方法是什么?

我担心的是其他人进入代码并了解正在发生的事情.即使示例很简单,也可以想象条件非常复杂.

举个例子:

public void function(string value, string value2)
{
    if (value == null)
        return;

    if (value2 == value)
        DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

要么

public void function(string value, string value2)
{
    if (value != null)
    {
        if (value2 == value)
            DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public void function(string value, string value2)
{
    if (value != null && value2 == value)
        DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

coding-style conditional-statements

9
推荐指数
3
解决办法
446
查看次数

match 语句(结构模式匹配)比 if-else 语句更快吗?

免责声明

我目前正在学习Java,我遇到了if-elseandswitch语句,并且我了解到Switch 语句比 if-else 语句稍快

我很熟悉,每当我们创建一些东西(定义函数和东西)时,Python 就会添加很多样板文件,这些样板文件可以通过使用dis函数反汇编它们来看到。

问题:

match语句比if-elsePython更快吗?使用它来代替传统的if-else语句是不是更有效率?

如果您不熟悉语句,请参阅PEP 636 - 结构模式匹配match教程的链接。

python python-3.x

9
推荐指数
1
解决办法
3636
查看次数

哪种方式更快?如果是elseif或select case

对于以下代码,

If Sheets("sheet1").Range("A1").Value = "option_1" Then
    Sheets("sheet1").Range("A1").Value = "option_2"
ElseIf Sheets("sheet1").Range("A1").Value = "option_2" Then
    Sheets("sheet1").Range("A1").Value = "option_3"
ElseIf Sheets("sheet1").Range("A1").Value = "option_3" Then
    Sheets("sheet1").Range("A1").Value = "option_4"
...
End IF
Run Code Online (Sandbox Code Playgroud)

Select Case Sheets("sheet1").Range("A1").Value
    Case Is = "option_1"
        Sheets("sheet1").Range("A1").Value = "option_2"
    Case Is = "option_2"
        Sheets("sheet1").Range("A1").Value = "option_3"
    Case Is = "option_3"
        Sheets("sheet1").Range("A1").Value = "option_4"
    ...
End Select
Run Code Online (Sandbox Code Playgroud)

问题:

1)我想知道哪条路会更快.如果可能的话,技术细节可以解释一下吗?

2)无论效率如何,在这种情况下我应该使用哪种方法,以获得更好的编码.

3)从数组中圈出值的任何其他"简单"方法?

excel vba excel-vba

8
推荐指数
2
解决办法
3万
查看次数