Is there an easy way to display the time it takes to compute any function from within IRB?
on 2009-03-20 17:21
on 2009-03-20 23:18
Jason Lillywhite 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)
on 2009-03-20 23:50
On Mar 20, 10:18 am, Jason Lillywhite <jason.lillywh...@gmail.com> 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
on 2009-03-21 00:02
Chris Shea 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
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.