Module: Ramaze::Helper::Bench
- Defined in:
- lib/ramaze/helper/bench.rb
Overview
The Benchmark helper is a simple helper that can be used to benchmark certain blocks of code by wrapping them in a block. This can be useful if you want to see how long a certain query takes or how long it takes to create a new user.
Instance Method Summary (collapse)
-
- (Mixed) bench(iterations = 1)
Will first run an empty loop to determine the overhead it imposes, then goes on to yield your block +iterations+ times.
Instance Method Details
- (Mixed) bench(iterations = 1)
Will first run an empty loop to determine the overhead it imposes, then goes on to yield your block +iterations+ times.
The last yielded return value will be returned upon completion of the benchmark and the result of the benchmark itself will be sent to Log.info
Example:
class MainController < Ramaze::Controller
def index
@users = bench{ User.all }
@tags = bench{ Article. }
end
end
This will show something like following in your log:
[..] INFO Bench ./start.rb:3:in `index': 0.121163845062256
[..] INFO Bench ./start.rb:4:in `index': 2.234987235098341
So now we know that the Article.tags call takes the most time and should be improved.
40 41 42 43 44 45 46 47 48 |
# File 'lib/ramaze/helper/bench.rb', line 40 def bench(iterations = 1) result = nil from = caller[0] delta = Benchmark.realtime{ iterations.times{ nil }} taken = Benchmark.realtime{ iterations.times{ result = yield }} Log.info "Bench #{from}: #{taken - delta}" return result end |