class Rubella::Weighting::Exponential

The Rubella::Weighting::Exponential object weights every bucket per amount of cores. But the cores with higher load get a visualisation boost, which is exponential. So one high load core, will have much more color, than serveral less load cores.

Public Instance Methods

parse(input) click to toggle source

Creates a output readable list. This list is Array within a subarrays, which contain the buckets for every time value unit.

@param input Rubella::Input An input object @return Rubella::Storage

# File lib/rubella/weighting/exponential.rb, line 19
def parse input
  # prepare data
  data_list    = Array.new()
  bucket_no    = 0

  input.each do |cores|
    # every 10 load percent one heatpoint
    i = 0
    data_list << Array.new(buckets) do
      current_cores = cores.select do |core|
        core >= i and
          ((core < (i+@steps)) or (core <= (i+@steps) and i+@steps == 100))
      end

      amount = current_cores.length
      i         = i + @steps
      core      = (amount.to_f*bucket_no**0.8)/cores.length
      bucket_no = bucket_no + 1

      core
    end
  end

  Rubella::Storage.new data_list
end