Class: PPool::TimeStats

Inherits:
Object
  • Object
show all
Defined in:
lib/time_stats.rb

Instance Method Summary collapse

Constructor Details

#initialize(average_size) ⇒ TimeStats

Returns a new instance of TimeStats.



29
30
31
32
33
34
35
# File 'lib/time_stats.rb', line 29

def initialize(average_size)
  @average_size = average_size
  @start_time = {}
  @process_count = 0
  @elapsed_time = {}
  @total_elapsed = 0
end

Instance Method Details

#average_elapsed_timeObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/time_stats.rb', line 57

def average_elapsed_time()
    
  if is_unlimited
    if @process_count == 0
        return 0
    end
    return (@total_elapsed / @process_count).round
   
  else
    size = @elapsed_time.size
    if size == 0
      return 0
    end
    
    total = @elapsed_time.inject(0) { |t, v| 
       t = t + v[1]
    }

    return (total / size).round
  end
end

#is_unlimitedObject



80
81
82
# File 'lib/time_stats.rb', line 80

def is_unlimited
   return @average_size == 0
end

#process_ended(pid) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/time_stats.rb', line 43

def process_ended(pid) 
  elapsed_time = (Time.now - @start_time.delete(pid)) * 1000

  if is_unlimited
    @total_elapsed = @total_elapsed + elapsed_time
    @process_count = @process_count + 1
  else 
    i = @process_count % @average_size
    @process_count = @process_count + 1
    @elapsed_time[i] = elapsed_time
  end
end

#process_started(pid) ⇒ Object



38
39
40
# File 'lib/time_stats.rb', line 38

def process_started(pid)
  @start_time[pid] = Time.now
end