gpt4 book ai didi

ruby - 为什么 .index 比 .all 快?

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:18 26 4
gpt4 key购买 nike

这是做同样事情的两个简单 block :

a = (0..100).to_a

a.all? do |x|
!(x == 1000)
end

nil == a.index do |x|
x == 1000
end

除了第二个总是快一点。为什么?

                                     user     system      total        real
testing all 1.140000 0.000000 1.140000 ( 1.144535)
testing index 0.770000 0.000000 0.770000 ( 0.769195)

最佳答案

原因是indexArray的一个方法。 Ruby 将迭代(在 C 中)项目并将它们依次生成到 block 。

另一方面,all?none?one?(它们都会慢 30% 左右)是方法可枚举。他们将调用 each,这将产生一个 C 函数,该函数将产生 block 。时间上的差异是由于涉及两个 yield

请注意 all? 等的特殊版本。可以在 Array 上定义,您将获得与 index 相同的性能,但这会有点丑陋和多余...

关于ruby - 为什么 .index 比 .all 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191123/

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