Sha256: 939ab2406b121d6fb8a1882d0c3841d36ae1fe28e3dcc0e229fc60c3fae42c51

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require 'descriptive-statistics'
require_relative 'base'

collection = []
1_000_000.times { collection << rand(1..99) }

puts '~~~ Baseline Summary Calculations ~~~'
puts

# rubocop:disable Metrics/MethodLength
def baseline_summary(data)
  {
    max: data.max,
    mean: data.mean,
    median: data.median,
    min: data.min,
    mode: data.mode,
    quartile_1: data.value_from_percentile(25),
    quartile_2: data.value_from_percentile(50),
    quartile_3: data.value_from_percentile(75),
    range: data.range,
    size: data.size,
    sum: data.sum,
    standard_deviation: data.standard_deviation,
    variance: data.variance
  }
end
# rubocop:enable Metrics/MethodLength

Benchmark.ips do |x|
  x.report('LS.13') do
    data = Lite::Statistics::Descriptive.new(collection)
    ls_baseline_summary(data)
  end

  x.report('DS.13') do
    data = DescriptiveStatistics::Stats.new(collection)
    baseline_summary(data)
  end

  x.compare!
end

puts '~~~ Full Summary Calculations ~~~'
puts

def full_summary(data)
  baseline_summary(data).merge(
    relative_standard_deviation: data.relative_standard_deviation,
    skewness: data.skewness,
    kurtosis: data.kurtosis
  )
end

Benchmark.ips do |x|
  x.report('LS.22') do
    data = Lite::Statistics::Descriptive.new(collection)
    data.sample_summary
  end

  x.report('DS.16') do
    data = DescriptiveStatistics::Stats.new(collection)
    full_summary(data)
  end

  x.compare!
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lite-statistics-1.0.5 benchmarks/descriptive-statistics.rb
lite-statistics-1.0.4 benchmarks/descriptive-statistics.rb
lite-statistics-1.0.3 benchmarks/descriptive-statistics.rb
lite-statistics-1.0.2 benchmarks/descriptive-statistics.rb
lite-statistics-1.0.1 benchmarks/descriptive-statistics.rb