On Tue, 19 Jun 2001, Avi Bryant wrote: > On Tue, 19 Jun 2001, Stephen White wrote: > > In the spirit of incremental improvement... > > > > Assuming "== []" creates an empty Array for the purpose of comparision, > > it would be a bit faster to do: > > def every(&block) > > reject(&block).empty? > > end > > def none(&block) > > find_all(&block).empty? > > end > And a bit faster still to do: > def every > reject{|a| yield a}.empty? > end > def none > find_all{|a| yield a}.empty? > end I don't know about your machine, but on mine, using Ruby 1.6.2, doing this: module Enumerable def every1(&b) ;reject(&b)==[]; end def every2(&b) ;reject(&b).empty?; end def every3 ;reject{|a| yield a}.empty?; end def every4 ;each {|x| return false if not yield x }; true ; end end [:every1,:every2,:every3,:every4].each {|t| GC.start a=Time.new 1000.times {(1..1000).send(t){|x| x<=1000 }} p Time.new-a } 4.16 reject(&b)==[] 4.15 reject(&b).empty? 6.80 reject{|a| yield a}.empty? 6.00 shortcutting solution And the last one goes faster in situations when the result is not always true. matju