Вот два простых блоков, которые делают то же самое:Почему .index быстрее, чем .all?
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)
Действительно? С этой логикой «x! = 1000» должно быть так же быстро? –
@LeeJarvis При условии, что '! =' Определяется в C в соответствии с таким же алгоритмом, как '==', это должно быть предсказанием. – sawa
Изменение его из '! (X == 1000)' на 'x! = 1000' не имеет существенного отличия. –