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

标签 if-statement wolfram-mathematica replace

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

If[condition1 AND condition2, A, B]


If[condition1, If[condition2, A, B], B]

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

我的推理:通过嵌套 IF,仅当条件 1 为真时才评估条件 2。在我正在做的事情中,这意味着 condition2 的评估次数将少于上面的第一个选项。

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

我希望我的问题不会太不恰当;我确信有第一个选项运行得更快的例子。我只是希望某些事情大体上是正确的。

谢谢你。

最佳答案

Mathematica 将短路 And 的评估和 Or如果在评估所有条件之前就知道结果。

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

Timing[If[False && (Pause[10]; True), True, False]]
Timing[If[False, If[(Pause[10]; True), True, False], False]]

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

关于if-statement - 一般来说,用一对嵌套的 IF 替换 AND 会加快速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317443/

相关文章:

wolfram-mathematica - Mathematica "linked lists"和性能

c++ - std::string 在开始和结束之间替换

替换R中的行值序列

wolfram-mathematica - 如何捕获由TimeConstrained生成的中断?

string - 在 Mathematica 中将文件内容转换为字符串的最佳方法是什么?

jquery - 用 JQuery 替换 <li> 索引值?

java - 如何&& if循环表达式求值?

javascript if语句条件替换变量值

c - 为什么在 C 的 if-else 条件中传递 (!NULL) 为真?

jquery - if 语句的问题 - 屏幕宽度