在ruby中,伪代码之间有什么区别吗?
if n > 2:
do something to A
end
if n > 4:
do something to B
end
if n >25:
do something to C
end
VS
if n>2 && n <4:
do something to A
elif n >4 && n < 25:
do something to A and do something to B
elif n > 25:
do something to A and B and C
end
正如您所看到的,它们做了同样的事情,但是如果您有很多
if then
语句,那么读写起来就更容易了。然而,如果多个if
块占用了更多的处理能力,那么这样写就不值得了。所以我想知道这两者之间是否有区别概念上的答案很好,我不需要基准测试任何东西
最佳答案
1/它们不相等。
第一个语句相当于
if n>2 && n <= 4:
do something to A
elif n > 4 && n <= 25:
do something to A
do something to B
elif n > 25:
do something to A
do something to B
do something to C
end
如果
do something to A
返回nil
或false
,则第二条语句将不会执行do something to B
。你忘了处理像
n = 4
和n = 25
这样的角落案件。2/在99.9%的情况下,您应该选择易于阅读/理解/调试的版本除非此代码每秒运行1000000次,否则这无关紧要。
如您所见,您已经通过尝试过早地优化它而创建了两个潜在的错误:)
3/就表现而言,简短的回答是:这取决于你的数据。
长期的答案是:你必须试着预测在大多数情况下
n
的范围。您只需计算比较次数:
n < 2
:语句1:3比较-语句2:3比较2 < n <= 4
:语句1:3比较-语句2:2比较4 < n <= 25
:语句1:3比较-语句2:4比较25 < n
:语句1:3比较-语句2:5比较关于ruby - 哪个是更快的,单独的条件式或与elsif组合?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15670736/