Class: CompareCompressors::Result

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

Overview

A single compressor-level result.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#compression_cpu_timeObject

Returns the value of attribute compression_cpu_time

Returns:

  • (Object)

    the current value of compression_cpu_time



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def compression_cpu_time
  @compression_cpu_time
end

#compression_elapsed_timeObject

Returns the value of attribute compression_elapsed_time

Returns:

  • (Object)

    the current value of compression_elapsed_time



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def compression_elapsed_time
  @compression_elapsed_time
end

#compression_max_rssObject

Returns the value of attribute compression_max_rss

Returns:

  • (Object)

    the current value of compression_max_rss



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def compression_max_rss
  @compression_max_rss
end

#compressor_levelObject

Returns the value of attribute compressor_level

Returns:

  • (Object)

    the current value of compressor_level



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def compressor_level
  @compressor_level
end

#compressor_nameObject

Returns the value of attribute compressor_name

Returns:

  • (Object)

    the current value of compressor_name



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def compressor_name
  @compressor_name
end

#decompression_cpu_timeObject

Returns the value of attribute decompression_cpu_time

Returns:

  • (Object)

    the current value of decompression_cpu_time



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def decompression_cpu_time
  @decompression_cpu_time
end

#decompression_elapsed_timeObject

Returns the value of attribute decompression_elapsed_time

Returns:

  • (Object)

    the current value of decompression_elapsed_time



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def decompression_elapsed_time
  @decompression_elapsed_time
end

#decompression_max_rssObject

Returns the value of attribute decompression_max_rss

Returns:

  • (Object)

    the current value of decompression_max_rss



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def decompression_max_rss
  @decompression_max_rss
end

#sizeObject

Returns the value of attribute size

Returns:

  • (Object)

    the current value of size



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def size
  @size
end

#targetObject

Returns the value of attribute target

Returns:

  • (Object)

    the current value of target



11
12
13
# File 'lib/compare_compressors/result.rb', line 11

def target
  @target
end

Class Method Details

.from_row(row) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/compare_compressors/result.rb', line 58

def self.from_row(row)
  Result.new(
    row['target'],
    row['compressor_name'],
    row['compressor_level'].to_i,
    row['compression_elapsed_time'].to_f,
    row['compression_cpu_time'].to_f,
    row['compression_max_rss'].to_i,
    row['size'].to_i,
    row['decompression_elapsed_time'].to_f,
    row['decompression_cpu_time'].to_f,
    row['decompression_max_rss'].to_i
  )
end

.geomean(results, attribute) ⇒ Object



77
78
79
# File 'lib/compare_compressors/result.rb', line 77

def self.geomean(results, attribute)
  results.map(&attribute).inject(&:*)**(1 / results.size.to_f)
end

.mean(results, attribute) ⇒ Object



73
74
75
# File 'lib/compare_compressors/result.rb', line 73

def self.mean(results, attribute)
  results.map(&attribute).inject(&:+) / results.size.to_f
end

.read_csv(io) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/compare_compressors/result.rb', line 48

def self.read_csv(io)
  results = []
  CSV(io, headers: true) do |csv|
    csv.each do |row|
      results << Result.from_row(row)
    end
  end
  results
end

Instance Method Details

#compression_deltaInteger

Returns should be positive; larger is better.

Returns:

  • (Integer)

    should be positive; larger is better



44
45
46
# File 'lib/compare_compressors/result.rb', line 44

def compression_delta
  uncompressed_size - size
end

#compression_ratioFloat

Returns positive; should be finite; larger is better.

Returns:

  • (Float)

    positive; should be finite; larger is better



37
38
39
# File 'lib/compare_compressors/result.rb', line 37

def compression_ratio
  uncompressed_size / size.to_f
end

#group_keyObject



23
24
25
# File 'lib/compare_compressors/result.rb', line 23

def group_key
  [compressor_name, compressor_level]
end

#uncompressed_sizeInteger

Returns in bytes; cached.

Returns:

  • (Integer)

    in bytes; cached



30
31
32
# File 'lib/compare_compressors/result.rb', line 30

def uncompressed_size
  @uncompressed_size ||= File.stat(target).size
end