ほら、1 つのベンチマーク:
require 'benchmark'
n = 1_000_000
Benchmark.bm(11) do |b|
b.report('%w') { n.times { %w[a b c d e f g h i j k l m n o p q r s t u v w x y z] } }
b.report('explicit') { n.times { ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] } }
b.report('numerics') { n.times { [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] } }
end
user system total real
%w 2.590000 0.000000 2.590000 ( 2.591225)
explicit 2.590000 0.000000 2.590000 ( 2.584781)
numerics 0.300000 0.000000 0.300000 ( 0.309161)
user system total real
%w 2.590000 0.000000 2.590000 ( 2.591516)
explicit 2.590000 0.000000 2.590000 ( 2.584155)
numerics 0.300000 0.000000 0.300000 ( 0.308896)
user system total real
%w 2.590000 0.000000 2.590000 ( 2.592848)
explicit 2.590000 0.000000 2.590000 ( 2.585558)
numerics 0.300000 0.000000 0.300000 ( 0.308570)
「numerics」配列テストを追加したのは、%w
文字列性のテストにより、明示的な文字列を使用するよりも高速であると思われたためです。%w
すべてが文字列であると想定しているため、これを行う必要はありません。3回実行した後は、弦を扱う限りウォッシュです。数字の支配、弦のよだれ、その他すべて。
以前のベンチマークは、職場のシステムで Ruby 1.9.3-p286 を使用して実行されました。自宅で古い MacBook Pro を使用して Ruby 1.8.7-p358 を使用して再度テストしたため、ホスティング ハードウェアの違いと古い Ruby の実行により、次の数値は遅くなります。
user system total real
%w 3.070000 0.000000 3.070000 ( 3.080983)
explicit 3.100000 0.000000 3.100000 ( 3.093083)
numerics 0.950000 0.040000 0.990000 ( 0.990535)
user system total real
%w 3.080000 0.010000 3.090000 ( 3.076787)
explicit 3.090000 0.000000 3.090000 ( 3.089246)
numerics 0.950000 0.030000 0.980000 ( 0.989579)
user system total real
%w 3.080000 0.000000 3.080000 ( 3.073877)
explicit 3.090000 0.000000 3.090000 ( 3.091576)
numerics 0.950000 0.030000 0.980000 ( 0.989132)
1.8.7では、%w
一貫してわずかに高速であり、おそらく速度の噂を引き起こしました.