Last Modified
2010-09-08 13:05:19 +0900
Requires
  • timeout

Description

Timer

Provides a strightforward means for controlling time critical execution. Can be used as a “stop watch” timer or as a “time bomb” timer.

Usage

  t = Timer.new(10) { raise TimeoutError, "timeout!" }
  t.start
    :      # done within 10sec timeout
  t.stop
  t.start
    :
  if condition then
    t.reset       #--> restart timer
  end

A Kernel method is also provided for easily timing the exectuion of a block.

  timed { |timer|

     timer.total_time.round #=> 0

     sleep 1
     timer.total_time.round #=> 1

     timer.stop
     timer.total_time.round #=> 1

     sleep 2
     timer.total_time.round #=> 1

     timer.start
     timer.total_time.round #=> 1

     sleep 1
     timer.total_time.round #=> 2

  }

HISTORY

Thanks to Paul Brannan for TimeLimit and Minero Aoki for Timer. These two libraries served as models for building this class.

AUTHORS

COPYRIGHT

  Copyright (c) 2004 Thomas Sawyer

LICENSE

  Ruby License

  This module is free software. You may use, modify, and/or redistribute this
  software under the same terms as Ruby.

  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.