Check if two arrays have the same contents (in any order)

前端 未结 9 1695
我在风中等你
我在风中等你 2020-12-24 04:13

I\'m using Ruby 1.8.6 with Rails 1.2.3, and need to determine whether two arrays have the same elements, regardless of whether or not they\'re in the same order. One of the

9条回答
  •  失恋的感觉
    2020-12-24 04:43

    combining & and size may be fast too.

    require 'benchmark/ips'
    require 'set'
    
    Benchmark.ips do |x|
      x.report('sort')   { a.sort == b.sort }  
      x.report('sort!')  { a.sort! == b.sort! }  
      x.report('to_set') { a.to_set == b.to_set }  
      x.report('minus')  { ((a - b) + (b - a)).empty? }
      x.report('&.size') { a.size == b.size && (a & b).size == a.size }  
    end  
    
    Calculating -------------------------------------
                    sort    896.094k (±11.4%) i/s -      4.458M in   5.056163s
                   sort!      1.237M (± 4.5%) i/s -      6.261M in   5.071796s
                  to_set    224.564k (± 6.3%) i/s -      1.132M in   5.064753s
                   minus      2.230M (± 7.0%) i/s -     11.171M in   5.038655s
                  &.size      2.829M (± 5.4%) i/s -     14.125M in   5.010414s
    

提交回复
热议问题