条件为真时,从头开始执行各种操作顺序

时间:2019-05-15 11:32:52

标签: java algorithm optimization

只要条件为真,我就需要找到最佳的解决方案(主要是在复杂性/速度上,而不是可读性或RAM分配)来执行不同操作(例如函数调用)的自定义序列。如果错误,则必须停止该序列。这是一个解决方案,例如:

/*This function starts when "condition = true", and
must stop running when "condition = false"*/

public void sequence(){
    //Every function has a duration lower than a milisecond
    function_a();

    if( condition = false ) return;

    function_b();

    /*--------------------------------
    same pattern * 20 (approximation)
    ---------------------------------*/

    if( condition = false ) return;

    function_z();

    //END of the sequence
}

比上一个更具可读性的另一个示例:

public void sequence_switch(){

    int currentStep = 0;

    do{
        switch(currentStep){
            case 0:
                function_a();
                break;

            case 1:
                function_b();
                break;

            /*--------------------------------
            same pattern * 20 (approximation)
            ---------------------------------*/

            case 2:
                function_z();
                break;
        }

        currentStep ++;
    }while( condition = true );
}

我一直在考虑异常,但是在某些情况下,它们会使程序变慢,也许情况并非如此?

更多信息:在大多数情况下(95%),该序列将不得不在执行前5个操作时停止,或者达到结束。 (想象一下机械臂必须将物体移动到不同的位置,如果它没有正确抓住物体,它将很快掉落,因此以下所有操作都不应该执行)

条件为假时立即停止该序列是至关重要的。

编辑:欢迎使用其他解决方案,但真正的答案是在效率方面进行比较。 此循环的理想情况是游戏中的宏:条件可能是“握住钥匙”,并且如果您没有在正确的时间使用这个复杂的宏,则想取消它(不这样做)。希望程序继续执行此顺序,则要恢复对鼠标/键盘的完全控制)。但是,如果一切顺利,除非有极少数情况,否则您将一直坚持到最后。

1 个答案:

答案 0 :(得分:1)

您的第一个解决方案具有完美的性能,不可能做得更好。