【发布时间】:2015-03-13 13:24:41
【问题描述】:
我使用以下简单的逻辑来回答这样一个question:
1: if(a) // 1 operation
2: if (b) // 1 operation
和
1: if(a && b) // 1, 1(&&), 1 => 3 operations.
因此,2 个操作对 3 个,但在第一个示例中,编译器需要调用另一条指令来执行。
这个逻辑是真的吗?
它取决于编译器吗?
调用像 ; 这样的空指令会花费编译器一些显着的时间吗?
This 也讨论了同样的问题,但没有考虑这个逻辑。 请帮助我们澄清这个问题。
【问题讨论】:
-
我认为它们没有什么不同,性能取决于使用情况。如果您在第二种类型之前使用第一种类型,那么第一种类型将花费更多时间,反之亦然。基本上两者都是一样的。
-
如果是 && 运算符,如果 a 被传递,那么 b 根本不会被计算。它的短路。
-
等等...只是检查一下。我们是在谈论运行速度还是编译速度?您使用了诸如“是否调用空指令...花费编译器一些明显的时间”之类的短语,但我不禁认为您在谈论运行时.
-
@TiyebBellal 为什么编译速度很重要?编译中的任何差异都将是微小的,并且只会出现一次。
-
@muasif80 如果它不检查 b 那将是 ||而不是 &&