Sha256: 630b322fb0ab4317add824c819315ed9d18460acb7c02fa23fdc9c0f9b9b843c

Contents?: true

Size: 719 Bytes

Versions: 47

Compression:

Stored size: 719 Bytes

Contents

# frozen_string_literal: true

require "benchmark/ips"

def slice
  str = ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40)
  lines = []
  while true
    idx = str.index("\n")
    break unless idx

    lines << str.slice!(0, idx + 1)
  end
  raise unless lines.size == 4
  raise unless str == ('*' * 40)
end

def split
  str = ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40) + "\n" + ('*' * 40)
  lines = str.split("\n")
  if str[-1] == "\n"
    str = ''
  else
    str = lines.pop
  end
  raise unless lines.size == 4
  raise unless str == ('*' * 40)
end

Benchmark.ips do |x|
  x.report("slice") { slice }
  x.report("split") { split }
  x.compare!
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
polyphony-1.6 examples/performance/line_splitting.rb
polyphony-1.5 examples/performance/line_splitting.rb
polyphony-1.4 examples/performance/line_splitting.rb
polyphony-1.3 examples/performance/line_splitting.rb
polyphony-1.2.1 examples/performance/line_splitting.rb
polyphony-1.2 examples/performance/line_splitting.rb
polyphony-1.1.1 examples/performance/line_splitting.rb
polyphony-1.1 examples/performance/line_splitting.rb
polyphony-1.0.2 examples/performance/line_splitting.rb
polyphony-1.0.1 examples/performance/line_splitting.rb
polyphony-1.0 examples/performance/line_splitting.rb
polyphony-0.99.6 examples/performance/line_splitting.rb
polyphony-0.99.5 examples/performance/line_splitting.rb
polyphony-0.99.4 examples/performance/line_splitting.rb
polyphony-0.99.3 examples/performance/line_splitting.rb
polyphony-0.99.2 examples/performance/line_splitting.rb
polyphony-0.99.1 examples/performance/line_splitting.rb
polyphony-0.99 examples/performance/line_splitting.rb
polyphony-0.98 examples/performance/line_splitting.rb
polyphony-0.97 examples/performance/line_splitting.rb