回到我学习 C 和汇编的那一天,我们被教导最好使用简单的比较来提高速度。例如,如果你说:
if(x <= 0)
相对
if(x < 1)
哪个会执行得更快?我的论点(可能是错误的)是第二个几乎总是执行得更快,因为只有一个比较)即它是否小于一个,是或否。
如果数字小于 0,则第一个将快速执行,因为这等于 true,无需检查等号使其与第二个一样快,但是,如果数字为 0 或更大,它总是会变慢,因为它然后必须进行第二次比较以查看它是否等于 0。
我现在使用 C#,虽然为台式机开发速度不是问题(至少在他的观点值得争论的程度上),但我仍然认为需要考虑这些论点,因为我也在为移动设备开发不如台式机强大,速度确实成为此类设备上的一个问题。
为了进一步考虑,我说的是整数(没有小数)和不能有负数的数字,如 -1 或 -12,345等(除非有错误),例如,当你不能处理列表或数组时有一个负数的项目,但你想检查一个列表是否为空(或者如果有问题,将 x 的值设置为负表示错误,一个例子是列表中有一些项目,但你不能出于某种原因检索整个列表并表明这一点,您将数字设置为负数,这与说没有项目不同)。
由于上述原因,我故意省略了明显的
if(x == 0)
和
if(x.isnullorempty())
和其他用于检测没有项目的列表的项目。
同样,为了考虑,我们正在讨论从数据库中检索项目的可能性,可能使用具有上述功能的 SQL 存储过程(即标准(至少在这家公司)是返回负数来表示问题)。
那么在这种情况下,使用上面的第一项还是第二项更好呢?