gpt4 book ai didi

ruby - 哪个更快,单独的条件,还是结合 elsif?

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:36 25 4
gpt4 key购买 nike

在 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

对比

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 block 占用了更多的处理能力,那么以这种方式编写就不值得了。

所以我想知道两者之间是否有区别?概念性答案很好,我不需要对任何东西进行基准测试

最佳答案

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 = 4 这样的极端情况和 n = 25 .

2/在99.9%的情况下,你应该选择更容易阅读/理解/调试的版本。除非此代码以每秒 1000000 次的速度运行,否则这无关紧要。如您所见,您已经通过尝试过早地对其进行优化而造成了 2 个潜在的错误:)

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com