Oto dwa proste bloki, które robią to samo:Dlaczego .index jest szybszy niż .all?
a = (0..100).to_a
a.all? do |x|
!(x == 1000)
end
nil == a.index do |x|
x == 1000
end
wyjątkiem, że drugi jest konsekwentnie trochę szybciej. Czemu?
user system total real
testing all 1.140000 0.000000 1.140000 ( 1.144535)
testing index 0.770000 0.000000 0.770000 ( 0.769195)
Naprawdę? Z tą logiką 'x! = 1000' powinno być tak szybkie? –
@LeeJarvis Pod warunkiem, że '! =' Jest zdefiniowany w C w podobnym algorytmie, jak zdefiniowano '==', to powinno być przewidywanie. – sawa
Zmiana z '! (X == 1000)' na 'x! = 1000' nie ma znaczącej różnicy. –