FrontPage  Index  Search  Changes  RSS  wikifarm  Login

lap.rb

概要

経過時間を測るための簡単なライブラリ。

p lap

で[ 前回呼び出し時からの経過時間, 最初の呼び出し時からの経過時間, ID名]の配列を返します。

ID名はデフォルトでは、lap コマンドが記述されているファイルのファイル名です。IDごとに必要な時刻を記録します。異なったファイルで共通に計測したい場合には、同一のシンボルなどを第一引数に指定してください。

正確ではありません、0.001秒くらいの誤差はあるでしょう。


依存性

  1. Linux でも Windowsでもつかえます。

利用者

* たけ(tk)は require に時間がかかるような場合によく使います。


実行見本:

[tk@EDiCube-04 tkUtils]$ cat 1.rb
require "lap"

p lap
sleep(0.1)
p lap
sleep(0.2)
p lap
sleep(0.3)
p lap
sleep(0.4)
p lap

[tk@EDiCube-04 tkUtils]$ ruby 1.rb
[0.0, 0.0, "1.rb"]
[0.09176, 0.09176, "1.rb"]
[0.200125, 0.291885, "1.rb"]
[0.299877, 0.591762, "1.rb"]
[0.400369, 0.992131, "1.rb"]
[tk@EDiCube-04 tkUtils]$

コメントがありましたらどうぞ

(comment plugin is disabled).

説明


ソース:

lap.rb

#! ruby -Ks
#-- lap.rb
#-- lap.pi

module Lap
  LAPS = {}

  def self.lap(name=nil,start=nil)
    unless name
      exp = /^(.*)\:(\d+|\d+\:in \`.+\')$/
      name = exp.match(caller[1])[1].tr('\\',"/")
    end
    now = ::Time.now
    lap = LAPS[name] ||= [now,now] # [time_prev, time_start]
    old    = lap[0]
    lap[0] = now
    lap[1] = start if start
    lap[1] = now if start==:now
    return [now-old,now-lap[1],name]
  end
end # module Laps

def lap(*args)
  Lap.lap(*args)
end

if __FILE__ == $0

#require "lap"

# ruby lap.rb で実行して、require "phi" の実行時間を測る。
p lap
sleep(0.1)
p lap
sleep(0.2)
p lap
sleep(0.3)
p lap
sleep(0.4)
p lap

=begin
G:\apollo\tkUtils>ruby lap.rb
[0.0, 0.0, "lap.rb"]
[0.109, 0.109, "lap.rb"]
[0.203, 0.312, "lap.rb"]
[0.313, 0.625, "lap.rb"]
[0.406, 1.031, "lap.rb"]

G:\apollo\tkUtils>

[tk@EDiCube-04 tkUtils]$ ruby lap.rb
[0.0, 0.0, "lap.rb"]
[0.0999, 0.0999, "lap.rb"]
[0.199997, 0.299897, "lap.rb"]
[0.300012, 0.599909, "lap.rb"]
[0.400198, 1.000107, "lap.rb"]
[tk@EDiCube-04 tkUtils]$

=end

end

Last modified:2006/06/26 16:50:57
Keyword(s):
References: