If-else语句可以减少处理时间

时间:2013-07-29 19:18:39

标签: process shortcut

假设我从我的程序用户那里输入了许多可能的输入,这些输入最可能是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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

我不确定,但我认为,由于分支预测,交换机案例在运行时会更有效率。使用If-elses,你有许多分支,这可能会出错,这对处理器que中的管道命令不利。 如果真的有很多可能性。

我通常使用< Key,方法调用>的地图/字典。只要它们具有相同的签名,这可能会起作用。它可能没有switch-case那么快,但是当你需要对新输入作出反应时它会给你一些灵活性。

例如:     字典myDic = new Dictionary();     myDic.Add(input1,()=>当input1出现时该怎么办;

调用看起来像这样:     myDicinput1;