benchmark-ips 是由 Puma 作者 Evan Phoenix(@evanphx)所寫的 RubyGem。
$ gem install benchmark-ips
首先把庫引入,接著用一個 Benchmark.ips do |x| ... end
區塊包住要量測的程式,x
實現了一個 report
方法,負責量測程式。
require 'benchmark/ips'
Benchmark.ips do |x|
x.report("addition") { 1 + 2 }
x.report("addition2") do |times|
i = 0
while i < times
1 + 2
i += 1
end
end
x.report("addition3", "1 + 2")
end
report
第一個參數是字串,用來說明量測的是甚麼。後面放要量測的程式碼,可以區塊、字串形式傳入。
原先使用 Ruby 自帶的 Benchmark 庫,需要預測到底要執行幾次,才可以得到信服的結果。
而次數又因各個開發者使用的機器而異。Benchmark-ips 很好的解決了這個問題。
Benchmark-ips 會在 5 秒內盡可能執行程式,告訴你 5 秒內程式可以執行幾次(i/s,iteration per second)。
若想更改默認的 5 秒,譬如改成 20 秒:
Benchmark.ips(20) do |x|
...
end
上例執行結果:
Calculating -------------------------------------
addition 72783 i/100ms
addition2 68922 i/100ms
addition3 84483 i/100ms
-------------------------------------------------
addition 5085784.0 (±7.3%) i/s - 25255701 in 4.999724s
addition2 23843924.9 (±10.0%) i/s - 116960634 in 4.993053s
addition3 24357200.0 (±7.5%) i/s - 120726207 in 4.997873s
排版精美,最棒的是會顯示標準偏差值,可以更好的了解量測結果。
:)