Class: CompareCompressors::GroupResult

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

Overview

A single compressor-level result averaged the over targets.

Constant Summary collapse

DEFAULT_SCALE =
1.0
HOUR =

seconds

3600
GIGABYTE =

bytes

1024**3

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#compressor_levelObject

Returns the value of attribute compressor_level

Returns:

  • (Object)

    the current value of compressor_level



7
8
9
# File 'lib/compare_compressors/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/group_result.rb', line 7

def compressor_name
  @compressor_name
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/group_result.rb', line 7

def geomean_compression_ratio
  @geomean_compression_ratio
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/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/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/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/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/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/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/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/group_result.rb', line 7

def mean_decompression_elapsed_hours
  @mean_decompression_elapsed_hours
end

Class Method Details

.group(results, scale: DEFAULT_SCALE) ⇒ Array.<GroupResult>

Group individual result to average across targets in the sample.

Parameters:

Returns:



51
52
53
54
55
56
57
58
59
60
# File 'lib/compare_compressors/group_result.rb', line 51

def self.group(results, scale: DEFAULT_SCALE)
  results.group_by(&:group_key).map do |_, group_results|
    GroupResult.new_from_results(
      group_results.first.compressor_name,
      group_results.first.compressor_level,
      group_results,
      scale
    )
  end
end

.new_from_results(compressor_name, compressor_level, results, scale) ⇒ Object

Create a GroupResult for a group of Results for the same compressor and level (but possibly multiple targets).



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/compare_compressors/group_result.rb', line 29

def self.new_from_results(compressor_name, compressor_level, results, scale)
  new(
    compressor_name,
    compressor_level,
    scale * Result.mean(results, :compression_elapsed_time) / HOUR,
    scale * Result.mean(results, :compression_cpu_time) / HOUR,
    results.map(&:compression_max_rss).max,
    scale * Result.mean(results, :size) / GIGABYTE,
    scale * Result.mean(results, :compression_delta) / GIGABYTE,
    Result.geomean(results, :compression_ratio),
    scale * Result.mean(results, :decompression_elapsed_time) / HOUR,
    scale * Result.mean(results, :decompression_cpu_time) / HOUR,
    results.map(&:decompression_max_rss).max
  )
end