a >= b && c <= b vs !( a < b || c > b)
Julia 中哪个性能更好?
如果按字面意思逐字评估,执行时间的差异将太小而无法衡量。它很可能会将它们转换为相同的可执行代码。我还没有检查过这个。这种微观优化是没有意义的。你可以尝试自己测量并尝试证明我是错的 (如果您提出了基准,您可能不会吸引负面投票)。
编译器很可能会将这些表达式中的任何一个转换为它认为最方便评估它正在处理的数据类型的规范形式。
FWIW 对于整数
a,b
我的猜测是,使用 &&
的表达式至少在 x86 系列 CPU 上可能具有优势,因为 TEST
指令的硬件支持避免了写周期。
就 CPU 而言,所有比较标志都是在比较操作后设置的,因此
>
与 <=
没有任何惩罚,条件分支将根据 a
和 的值进行或不进行b
。
PS 您应该首先追求清晰度和正确性。如果算法实现明显太慢,那么仅然后使用分析来查找热点。太多的时间浪费在过早的优化上。