ハッシュの配列を反復処理するのにかかる時間を確認することにしました。以下はコードです:
pairs = [{name: "firstname", value: "string"},{name: "lastname", value: "string"},{name: "country", value: "string"},{name: "city", value: "string"},{name: "state", value: "string"},{name: "company", value: "string"},{name: "year", value: "string"},{name: "political_affiliation", value: "string"},{name: "social_security_number", value: "string"}] * 1000
blank = {}
start = Time.now
pairs.each do |pair|
blank[pair[:name]] = pair[:value]
end
p Time.now - start
時間は、ループ前の現在時間からループ後の現在時間を引いて計算されます。
これは、コード内の計算によると、YARV 2.1.1 で計算にかかった時間です。
0.001962017
Rubinius 2.2.6 でかかった時間は次のとおりです。
0.022598
そしてjRuby 1.7.12
0.022317
おそらく、Rubinius と jRuby は YARV よりもパフォーマンスが優れています。同じ基本操作を実行するのに、なぜ 12 倍近くの時間がかかるのでしょうか? これは正常ですか、それとも何かが不適切に構成されていますか?