Class: CompareCompressors::CostedGroupResult

Inherits:
Struct
  • Object
show all
Defined in:
lib/compare_compressors/costed_group_result.rb

Overview

Grouped result with costs calculated.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#compression_hour_costObject

Returns the value of attribute compression_hour_cost

Returns:

  • (Object)

    the current value of compression_hour_cost



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def compression_hour_cost
  @compression_hour_cost
end

#compressor_levelObject

Returns the value of attribute compressor_level

Returns:

  • (Object)

    the current value of compressor_level



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def compressor_level
  @compressor_level
end

#compressor_nameObject

Returns the value of attribute compressor_name

Returns:

  • (Object)

    the current value of compressor_name



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def compressor_name
  @compressor_name
end

#decompression_hour_costObject

Returns the value of attribute decompression_hour_cost

Returns:

  • (Object)

    the current value of decompression_hour_cost



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def decompression_hour_cost
  @decompression_hour_cost
end

#geomean_compression_ratioObject

Returns the value of attribute geomean_compression_ratio

Returns:

  • (Object)

    the current value of geomean_compression_ratio



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def geomean_compression_ratio
  @geomean_compression_ratio
end

#gibyte_costObject

Returns the value of attribute gibyte_cost

Returns:

  • (Object)

    the current value of gibyte_cost



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def gibyte_cost
  @gibyte_cost
end

#hour_costObject

Returns the value of attribute hour_cost

Returns:

  • (Object)

    the current value of hour_cost



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def hour_cost
  @hour_cost
end

#max_compression_max_rssObject

Returns the value of attribute max_compression_max_rss

Returns:

  • (Object)

    the current value of max_compression_max_rss



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def max_compression_max_rss
  @max_compression_max_rss
end

#max_decompression_max_rssObject

Returns the value of attribute max_decompression_max_rss

Returns:

  • (Object)

    the current value of max_decompression_max_rss



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def max_decompression_max_rss
  @max_decompression_max_rss
end

#mean_compressed_gibytesObject

Returns the value of attribute mean_compressed_gibytes

Returns:

  • (Object)

    the current value of mean_compressed_gibytes



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_compressed_gibytes
  @mean_compressed_gibytes
end

#mean_compression_cpu_hoursObject

Returns the value of attribute mean_compression_cpu_hours

Returns:

  • (Object)

    the current value of mean_compression_cpu_hours



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_compression_cpu_hours
  @mean_compression_cpu_hours
end

#mean_compression_delta_gibytesObject

Returns the value of attribute mean_compression_delta_gibytes

Returns:

  • (Object)

    the current value of mean_compression_delta_gibytes



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_compression_delta_gibytes
  @mean_compression_delta_gibytes
end

#mean_compression_elapsed_hoursObject

Returns the value of attribute mean_compression_elapsed_hours

Returns:

  • (Object)

    the current value of mean_compression_elapsed_hours



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_compression_elapsed_hours
  @mean_compression_elapsed_hours
end

#mean_decompression_cpu_hoursObject

Returns the value of attribute mean_decompression_cpu_hours

Returns:

  • (Object)

    the current value of mean_decompression_cpu_hours



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_decompression_cpu_hours
  @mean_decompression_cpu_hours
end

#mean_decompression_elapsed_hoursObject

Returns the value of attribute mean_decompression_elapsed_hours

Returns:

  • (Object)

    the current value of mean_decompression_elapsed_hours



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def mean_decompression_elapsed_hours
  @mean_decompression_elapsed_hours
end

#total_costObject

Returns the value of attribute total_cost

Returns:

  • (Object)

    the current value of total_cost



7
8
9
# File 'lib/compare_compressors/costed_group_result.rb', line 7

def total_cost
  @total_cost
end

Class Method Details

.from_group_results(cost_model, group_results) ⇒ Object



61
62
63
64
65
# File 'lib/compare_compressors/costed_group_result.rb', line 61

def self.from_group_results(cost_model, group_results)
  group_results.map do |group_result|
    new_from_group_result(cost_model, group_result)
  end
end

.new_from_group_result(cost_model, group_result) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/compare_compressors/costed_group_result.rb', line 25

def self.new_from_group_result(cost_model, group_result)
  if cost_model.use_cpu_time
    compression_hours = group_result.mean_compression_cpu_hours
    decompression_hours = group_result.mean_decompression_cpu_hours
  else
    compression_hours = group_result.mean_compression_elapsed_hours
    decompression_hours = group_result.mean_decompression_elapsed_hours
  end
  compression_hour_cost =
    cost_model.compression_hour_cost * compression_hours
  decompression_hour_cost =
    cost_model.decompression_hour_cost * decompression_hours
  hour_cost = compression_hour_cost + decompression_hour_cost
  gibyte_cost =
    cost_model.gibyte_cost *
    group_result.mean_compressed_gibytes
  new(
    group_result.compressor_name,
    group_result.compressor_level,
    group_result.mean_compression_cpu_hours,
    group_result.mean_compression_elapsed_hours,
    group_result.max_compression_max_rss,
    group_result.mean_compressed_gibytes,
    group_result.mean_compression_delta_gibytes,
    group_result.geomean_compression_ratio,
    group_result.mean_decompression_elapsed_hours,
    group_result.mean_decompression_cpu_hours,
    group_result.max_decompression_max_rss,
    compression_hour_cost,
    decompression_hour_cost,
    hour_cost,
    gibyte_cost,
    hour_cost + gibyte_cost
  )
end

Instance Method Details

#to_s(currency = CostModel::DEFAULT_CURRENCY) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/compare_compressors/costed_group_result.rb', line 67

def to_s(currency = CostModel::DEFAULT_CURRENCY)
  gib_saved = mean_compression_delta_gibytes
  <<-STRING
#{compressor_name} level #{compressor_level}:
  compression ratio           : #{format('%.2f', geomean_compression_ratio)}
  compression elapsed hours   : #{format('%.4f', mean_compression_elapsed_hours)}
  compression CPU hours       : #{format('%.4f', mean_compression_cpu_hours)}
  compression max RSS (KiB)   : #{format('%d', max_compression_max_rss)}
  compressed GiB              : #{format('%.4f', mean_compressed_gibytes)}
  GiB saved                   : #{format('%.2f', gib_saved)}
  decompression elapsed hours : #{format('%.4f', mean_decompression_elapsed_hours)}
  decompression CPU hours     : #{format('%.4f', mean_decompression_cpu_hours)}
  decompression max RSS (KiB) : #{format('%d', max_decompression_max_rss)}
  ------------------
  storage cost                : #{format('%s%0.02f', currency, gibyte_cost)}
  compute cost                : #{format('%s%0.02f', currency, hour_cost)}
  total cost                  : #{format('%s%0.02f', currency, total_cost)}
  STRING
end