class Pwrake::RankStat

Public Class Methods

new() click to toggle source
# File lib/pwrake/task/task_rank.rb, line 5
def initialize
  @lock = Mutex.new
  @stat = []
end

Public Instance Methods

add_sample(rank,elap) click to toggle source
# File lib/pwrake/task/task_rank.rb, line 10
def add_sample(rank,elap)
  @lock.synchronize do
    stat = @stat[rank]
    if stat.nil?
      @stat[rank] = stat = [0,0.0]
    end
    stat[0] += 1
    stat[1] += elap
    #Log.debug "add_sample rank=#{rank} stat=#{stat.inspect} weight=#{stat[0]/stat[1]}"
  end
end
rank_weight() click to toggle source
# File lib/pwrake/task/task_rank.rb, line 22
def rank_weight
  @lock.synchronize do
    sum = 0.0
    count = 0
    weight = @stat.map do |stat|
      if stat
        w = stat[0]/stat[1]
        sum += w
        count += 1
        w
      else
        nil
      end
    end
    if count == 0
      avg = 1.0
    else
      avg = sum/count
    end
    [weight, avg]
  end
end