0

假设我有许多来自我的程序用户的可能输入,从最有可能到最不可能列出为 input1、input2、input3、...、inputN。下面的框架是否会通过首先访问最可能需要的 If 语句然后忽略其余的(而不是随后测试每个 If 语句的有效性)来减少处理时间?我假设最不可能的 inputN 会给处理器带来额外的负担,但是如果这种结构减少了整体处理时间,那么用户提供该输入的可能性有限,那么它是值得的。

If (input1) then (output1)
Else
    If (input2) then (output2)
    Else
        If (input3) then:(output3)
        Else
            If ...

            ... Else
                    OutputN

谢谢!

4

2 回答 2

1

这就是 if-else-if 语句的工作方式。

if(booleanTest1)
{
   //do a thing
}
else if(booleanTest2)
{
   //do another thing
}
//...ad infinitum
else
{
   //do default behavior
}

如果 booleanTest1 为真,我们执行它的代码,然后跳过所有其他测试。

如果要将一个变量与许多可能的值进行比较,请使用switch语句。

于 2013-07-29T19:24:11.543 回答
0

我不确定,但我假设,由于分支预测,switch-case 在运行时会更有效。使用 If-else,您有许多分支,这可能会出错,这对处理器队列中的管道命令不利。如果真的有很多可能性。

我通常使用 <Key, Method to call> 的映射/字典来做 ist。只要它们具有相同的签名,这可能会起作用。它可能不如 switch-case 快,但当你需要对新输入做出反应时,它会给你一些灵活性。

例如:字典 myDic = new Dictionary(); myDic.Add(input1,() => 当 input1 出现时要做什么);

调用看起来像这样:myDicinput1;

于 2013-07-29T19:27:55.030 回答