require 'benchmark'
h = [{number: 1},{number: 2}, {number: 3}, {number: 4}]
a = [3,4,1,2]
index_table = Hash[a.map.with_index{|v,i|[v,i]}]
n=10_000
Benchmark.bm(10) do |algo|
algo.report("index"){n.times{ h.sort_by{|el| a.index(el[:number])}}}
algo.report("index_table"){n.times{ h.sort_by{|el| index_table[el]}}}
end
cmVxdWlyZSAnYmVuY2htYXJrJwoKaCA9IFt7bnVtYmVyOiAxfSx7bnVtYmVyOiAyfSwge251bWJlcjogM30sIHtudW1iZXI6IDR9XQphID0gWzMsNCwxLDJdCmluZGV4X3RhYmxlID0gSGFzaFthLm1hcC53aXRoX2luZGV4e3x2LGl8W3YsaV19XQpuPTEwXzAwMAoKQmVuY2htYXJrLmJtKDEwKSBkbyB8YWxnb3wKICBhbGdvLnJlcG9ydCgiaW5kZXgiKXtuLnRpbWVzeyBoLnNvcnRfYnl7fGVsfCBhLmluZGV4KGVsWzpudW1iZXJdKX19fQogIGFsZ28ucmVwb3J0KCJpbmRleF90YWJsZSIpe24udGltZXN7IGguc29ydF9ieXt8ZWx8IGluZGV4X3RhYmxlW2VsXX19fQplbmQ=