Display computation time in IRB


#1

Is there an easy way to display the time it takes to compute any
function from within IRB?


#2

Jason L. wrote:

Is there an easy way to display the time it takes to compute any
function from within IRB?

If I understand correctly, there is the Benchmark module

http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html

require ‘benchmark’
=> true

Benchmark.bmbm do |x|
?> x.report(‘concat’) {s=‘t ‘;(1…10000).step do |x| s.concat(x.to_s)
end}
?> x.report(’<<’) {s='t ';(1…10000).step do |x| s << x.to_s end}

end
Rehearsal ------------------------------------------
concat 0.010000 0.000000 0.010000 ( 0.008603)
<< 0.010000 0.000000 0.010000 ( 0.007354)
--------------------------------- total: 0.020000sec

         user     system      total        real

concat 0.000000 0.000000 0.000000 ( 0.006930)
<< 0.010000 0.000000 0.010000 ( 0.007101)


#3

yes, that is what I wanted. I just didn’t know how to ask for it.

Thanks.


#4

Chris S. wrote:

def time
“hi”

HTH,
Chris

Or something like this:

irb(main):005:0> def time
irb(main):006:1> start = Process.times.inject{|s,x|s+x}
irb(main):007:1> result = yield
irb(main):008:1> finish = Process.times.inject{|s,x|s+x}
irb(main):009:1> puts “Completed in #{finish - start} cpu seconds”
irb(main):010:1> result
irb(main):011:1> end
=> nil
irb(main):012:0> time {sleep 1}
Completed in 0.0 cpu seconds
=> 1
irb(main):013:0> time {1000000.times {1.23**42}}
Completed in 0.57 cpu seconds
=> 1000000


#5

On Mar 20, 10:18 am, Jason L. removed_email_address@domain.invalid
wrote:

Is there an easy way to display the time it takes to compute any
function from within IRB?

Posted viahttp://www.ruby-forum.com/.

It’s not unheard of for people to add something like this to their
irbrc:

def time
start = Time.now
result = yield
puts “Completed in #{Time.now - start} seconds.”
result
end

In use:

016:0> time { (‘a’*10_000_000).sub(/a+/,‘hi’) }
Completed in 0.446504 seconds.
“hi”

HTH,
Chris