首页 > 解决方案 > 当条件为真时,从头开始执行各种操作的序列

问题描述

只要条件为真,我需要找到最佳解决方案(主要是复杂性/速度,而不是可读性或 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 个操作执行时停止,要么达到其结束。(想象一个机械臂必须在不同的点移动一个物体,如果它没有正确抓住物体它会很快下降,所以不应该执行以下所有操作)

一旦条件为假,立即停止序列是至关重要的。

编辑:欢迎其他解决方案,但真正的答案是效率方面的比较。这个循环的完美情况类似于游戏中的宏:条件可能是“持有一个键”,如果你没有在正确的时间使用这个复杂的宏,你想取消它(你不想要程序继续这个序列,你想要恢复对鼠标/键盘的完全控制)。但如果它开始得很好,你会坚持到最后,除非在极少数情况下。

标签: javaalgorithmoptimization

解决方案


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


推荐阅读