Qui ci sono due semplici blocchi che fanno la stessa cosa:Perché è .index più veloce di .all?
a = (0..100).to_a
a.all? do |x|
!(x == 1000)
end
nil == a.index do |x|
x == 1000
end
eccezione del fatto che il secondo è sempre un po 'più veloce. Perché?
user system total real
testing all 1.140000 0.000000 1.140000 ( 1.144535)
testing index 0.770000 0.000000 0.770000 ( 0.769195)
Davvero? Con quella logica 'x! = 1000' dovrebbe essere il più veloce? –
@LeeJarvis A condizione che '! =' Sia definito in C in un algoritmo simile a come '==' è definito, quella dovrebbe essere la previsione. – sawa
Cambiarlo da '! (X == 1000)' a 'x! = 1000' non fa una differenza significativa. –