How to time the duration of a script


#1

If I wanted to find something like the “time” feature on shell…

where you can do:

time ls

and it will tell you how long it took to execute…

How would I do this in Ruby or what is the packaged that can do this for
me? I want it to kick off as soon as the script gets called and just
print the time taken to execute at the end of the script.


#2

Oscar G. wrote:

If I wanted to find something like the “time” feature on shell…

where you can do:

time ls

and it will tell you how long it took to execute…

How would I do this in Ruby or what is the packaged that can do this for
me? I want it to kick off as soon as the script gets called and just
print the time taken to execute at the end of the script.

Well, you can actually use ‘time my.rb’ :slight_smile:

Within ruby, you can use Benchmark (in stdlib):

require ‘benchmark’

Benchmark.bm {|bench|
bench.report { do_something_here }
}

Another popular idiom seems to be the classic:

start = Time.now

Do something

duration = Time.now - start

E


#3

On Tue, 13 Dec 2005, Oscar G. wrote:

print the time taken to execute at the end of the script.
harp:~ > cat elapsed.rb
BEGIN{ $start_time = Time::now.to_f }
END{ $end_time = Time::now.to_f; puts "#{ $0 } elapsed: #{ $end_time

  • $start_time} }" }

    harp:~ > cat a.rb
    sleep 2 and p 42

    harp:~ > ruby -r elapsed a.rb
    42
    a.rb elapsed: 1.99891686439514 }

or

harp:~ > cat a.rb
#!/usr/bin/env ruby
sleep 2 and p 42

harp:~ > RUBYOPT="-relapsed" ./a.rb
42
./a.rb elapsed: 1.99908494949341 }

hth.

-a