Sha256: e19918ab05ccb74e48e6c28db7bc646d0855d23ce4736890b3052db0dd9a12f0

Contents?: true

Size: 1.63 KB

Versions: 26

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

require 'benchmark/ips'
require 'jekyll'

class FooPage
  def initialize(dir:, name:)
    @dir = dir
    @name = name
  end

  def slow_path
    File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r{\A/}, '')
  end

  def fast_path
    Jekyll::PathManager.join(@dir, @name).sub(%r{\A/}, '')
  end
end

nil_page     = FooPage.new(dir: nil, name: nil)
empty_page   = FooPage.new(dir: '', name: '')
root_page    = FooPage.new(dir: '', name: 'ipsum.md')
nested_page  = FooPage.new(dir: 'lorem', name: 'ipsum.md')
slashed_page = FooPage.new(dir: '/lorem/', name: '/ipsum.md')

if nil_page.slow_path == nil_page.fast_path
  Benchmark.ips do |x|
    x.report('nil_page slow') { nil_page.slow_path }
    x.report('nil_page fast') { nil_page.fast_path }
    x.compare!
  end
end

if empty_page.slow_path == empty_page.fast_path
  Benchmark.ips do |x|
    x.report('empty_page slow') { empty_page.slow_path }
    x.report('empty_page fast') { empty_page.fast_path }
    x.compare!
  end
end

if root_page.slow_path == root_page.fast_path
  Benchmark.ips do |x|
    x.report('root_page slow') { root_page.slow_path }
    x.report('root_page fast') { root_page.fast_path }
    x.compare!
  end
end

if nested_page.slow_path == nested_page.fast_path
  Benchmark.ips do |x|
    x.report('nested_page slow') { nested_page.slow_path }
    x.report('nested_page fast') { nested_page.fast_path }
    x.compare!
  end
end

if slashed_page.slow_path == slashed_page.fast_path
  Benchmark.ips do |x|
    x.report('slashed_page slow') { slashed_page.slow_path }
    x.report('slashed_page fast') { slashed_page.fast_path }
    x.compare!
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
lbenicio-minimal-v1-1.6.4 benchmark/path-manager.rb
lbenicio-minimal-v1-1.6.3 benchmark/path-manager.rb
lbenicio-minimal-v1-1.6.2 benchmark/path-manager.rb
lbenicio-minimal-v1-1.6.1 benchmark/path-manager.rb
lbenicio-minimal-v1-1.5.3 benchmark/path-manager.rb
lbenicio-minimal-v1-1.5.2 benchmark/path-manager.rb
lbenicio-minimal-v1-1.5.0 benchmark/path-manager.rb
lbenicio-minimal-v1-1.4.0 benchmark/path-manager.rb
lbenicio-minimal-v1-1.3.3 benchmark/path-manager.rb
lbenicio-minimal-v1-1.3.2 benchmark/path-manager.rb
lbenicio-minimal-v1-1.3.1 benchmark/path-manager.rb
lbenicio-minimal-v1-1.3.0 benchmark/path-manager.rb
lbenicio-minimal-v1-1.2.1 benchmark/path-manager.rb
lbenicio-minimal-v1-1.2.0 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.9 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.8 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.7 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.6 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.5 benchmark/path-manager.rb
lbenicio-minimal-v1-1.1.4 benchmark/path-manager.rb