【发布时间】:2017-03-28 00:35:11
【问题描述】:
考虑以下场景:
我有 2 个常量 MAX 和 MIN
我得到一个新号码x
现在要检查 x 是否在给定的愤怒中,我会做这样的事情:
if(x >= MIN && X <= MAX)
{
//Some logic
}
我想知道是否有更好的方法来谈论效率。我知道这是一项非常简单的任务,但我只是想知道是否有更好的方法
【问题讨论】:
-
为什么您认为有比简单地与
>=和<=进行比较更有效的方法?为什么你在乎呢? -
有什么比两次比较和一个逻辑“与”更有效的呢?这些只是三个原子处理器 OP。在某些情况下,只有一个 OP(逻辑短路)。
-
比较操作是最便宜的——CPU 在硬件中实现它们,它们实际上只消耗一条指令(加上内存负载)。这不可能成为性能瓶颈,所以它真的不经受更多的审查。保持简单,不要想太多不是问题的问题。
-
您是否面临该代码的性能问题?
-
@dymanoid 更有效的方法是单次减法以及无操作转换和比较。见副本。然而,这很可能是现代编译器自动优化的