Ruby初心者スレッド Part 11
■ このスレッドは過去ログ倉庫に格納されています
0227デフォルトの名無しさん
2007/04/01(日) 15:11:22そもそもの発端である>>135では
> a = ['f2f', 'f10f', 'f1f', 'f0f', 'f3f']
> sa = a.sort{|a,b| a[/¥d+/].to_i <=> b[/¥d+/].to_i }
と書いてあるから、これにそってベンチすべきじゃね?
require 'benchmark'
data = (1..10000).collect { "f#{rand(10000)}f" }
Benchmark.bm(10) do |bench|
bench.report("sort_by") { data.sort_by {|a| a[/¥d+/].to_i } }
bench.report("sort") { data.sort {|a,b| a[/¥d+/].to_i <=> b[/¥d+/].to_i } }
bench.report("sort!") { data.sort! {|a,b| a[/¥d+/].to_i <=> b[/¥d+/].to_i } }
end
結果:
user system total real
sort_by 0.090000 0.000000 0.090000 ( 0.118594)
sort 1.030000 0.010000 1.040000 ( 1.154424)
sort! 1.030000 0.020000 1.050000 ( 1.348342)
もう明らかにsort_byが速い。sortとsort!の差は誤差。しかもsort!のほうが悪い数値。
>>208
今回がまさにそのケースだな
>>200
これはひどい
■ このスレッドは過去ログ倉庫に格納されています