>>449
ソースを見たところ、bをHashにしてa.eachで突き合わせてるようす。
時間はhashメソッドの実装にもよるかもと思って試したらよくわからない結果になった。
@CoreDuo T2600, ruby-1.8.5-preview5 on Cygwin 1.5.21-2
      user system total real
Fixnum 0.234000 0.016000 0.250000 ( 0.238000)
Float 873.125000 0.156000 873.281000 (888.061000)
String 0.704000 0.000000 0.704000 ( 0.703000)
LongString 0.516000 0.000000 0.516000 ( 0.494000)
Object 0.531000 0.000000 0.531000 ( 0.536000)

require 'benchmark'

class Hoge
  def hogehoge;end
  @value = rand
end
def mklary(dir, size)
  Dir[File.join(dir,'*.*')].sort{rand(2)<=>1}[0, size].map{|fn| IO.read(fn)}
end
Benchmark.bm(0) do |job|
  j = "job.report(t) {a - b}"; al = 1000000; bl = 500000
  t="Fixnum"; a = (1..al).to_a; b = (1..bl).to_a; eval(j)
  t="Float"; a = (1..al).map{rand}; b = (1..bl).map{rand}; eval(j)
  t="String"; a = (1..al).map{|i| i.to_s}; b = (1..bl).map{|i| i.to_s}; eval(j)
  t="LongString"; a = mklary('/usr/bin',500); b = mklary('/usr/bin',250); eval(j)
  t="Object"; a = (1..al).map{Hoge.new}; b = (1..bl).map{Hoge.new}; eval(j)
end