Que diriez-vous de Enumerable#any?
>> fromages = %w(chedder stilton brie mozzarella feta haloumi)
=> ["chedder", "stilton", "brie", "mozzarella", "feta", "haloumi"]
>> aliments = %w(pizza feta foods bread biscuits yoghurt bacon)
=> ["pizza", "feta", "foods", "bread", "biscuits", "yoghurt", "bacon"]
>> aliments.any? {|food| fromages.include?(food) }
=> true
Script de benchmark:
require "benchmark"
N = 1_000_000
puts "version de ruby: #{RUBY_VERSION}"
FROMAGES = %w(chedder stilton brie mozzarella feta haloumi).freeze
ALIMENTS = %w(pizza feta foods bread biscuits yoghurt bacon).freeze
Benchmark.bm(15) do |b|
b.report("&, empty?") { N.times { (ALIMENTS & FROMAGES).empty? } }
b.report("any?, include?") { N.times { ALIMENTS.any? {|food| FROMAGES.include?(food) } } }
end
Résultat:
version de ruby: 2.1.9
user system total real
&, empty? 1.170000 0.000000 1.170000 ( 1.172507)
any?, include? 0.660000 0.000000 0.660000 ( 0.666015)