一般来说,用一对嵌套的IF代替AND会加快速度吗?

and*_*drz 3 replace if-statement wolfram-mathematica

我正在权衡两者之间的差异

If[condition1 AND condition2, A, B]
Run Code Online (Sandbox Code Playgroud)

If[condition1, If[condition2, A, B], B]
Run Code Online (Sandbox Code Playgroud)

我的想法:嵌套的IF会更快.

我的理由是:通过嵌套的IF,条件2只计算在条件1为真.在我正在做的事情中,这意味着condition2评估次数将少于上面第一个选项.

AND是通常的逻辑"和"(当且仅当两个前提都为真时才为真).通过IF,我的意思是IF [ 条件,当条件为真时,条件为假].

我希望我的问题不是太不合适; 我确信有一些例子可以让第一个选项运行得更快.我只是希望一般情况确实如此.

谢谢.

Bre*_*ion 8

数学将短路评价AndOr如果结果变得评估所有条件之前是已知的.

你可以通过使用(人为)需要很长时间的条件来看到这一点:

Timing[If[False && (Pause[10]; True), True, False]]
Timing[If[False, If[(Pause[10]; True), True, False], False]]
Run Code Online (Sandbox Code Playgroud)

并且看到两者都在几分之一秒内而不是在十秒内返回.


Ree*_*ore 5

通常(但不总是),语言将具有称为短路逻辑的特征,其中AND条件中的第二个操作数仅在第一个为真时才被评估(对于OR,仅在第一个为假时才评估第二个操作数) ).然而,这取决于语言.