在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返回nilfalse,则第二条语句将不会执行do something to B
你忘了处理像n = 4n = 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/

10-15 10:00