John W Higgins wrote in post #1113860:
> The #sort_by block tells the engine which field to use when sorting an
> item.
> The #sort block gets called with the 2 items being compared and the
> block
> should return how the items compare (-1, 0, 1).

Thanks for your feed back. Why #sort_by here is faster?



require 'benchmark'

a = [
  {
    "id"=>1,
    "popularity"=>7.77030797174916,
    "title"=>"Another film",
  },
  {
    "id"=>2,
    "popularity"=>2.7703074916,
    "title"=>"A film",
  },
  {
    "id"=>3,
    "popularity"=>9.77030797174916,
    "title"=>"A third film",
  }
]

Benchmark.bm(100) do |b|
  b.report("Sort")    { a.sort{|h1,h2| h1["popularity"] <=> 
h2["popularity"]} }
  b.report("Sort by") { a.sort_by{|h| h["popularity"]} }
end

                 user     system      total        real
Sort         0.000000   0.000000   0.000000 (  0.000041)
Sort by      0.000000   0.000000   0.000000 (  0.000019)

-- 
Posted via http://www.ruby-forum.com/.