Sha256: 078b9e35b040a39e394aaa2adca923f6c3c30e315e68019071dee70b8cb1de58

Contents?: true

Size: 723 Bytes

Versions: 30

Compression:

Stored size: 723 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

30 entries across 30 versions & 1 rubygems

Version Path
polyphony-0.71 examples/performance/line_splitting.rb
polyphony-0.70 examples/performance/line_splitting.rb
polyphony-0.69 examples/performance/line_splitting.rb
polyphony-0.68 examples/performance/line_splitting.rb
polyphony-0.67 examples/performance/line_splitting.rb
polyphony-0.66 examples/performance/line_splitting.rb
polyphony-0.65 examples/performance/line_splitting.rb
polyphony-0.64 examples/performance/line_splitting.rb
polyphony-0.63 examples/performance/line_splitting.rb
polyphony-0.62 examples/performance/line_splitting.rb
polyphony-0.61 examples/performance/line_splitting.rb
polyphony-0.60 examples/performance/line_splitting.rb
polyphony-0.59.1 examples/performance/line_splitting.rb
polyphony-0.59 examples/performance/line_splitting.rb
polyphony-0.58 examples/performance/line_splitting.rb
polyphony-0.57.0 examples/performance/line_splitting.rb
polyphony-0.56.0 examples/performance/line_splitting.rb
polyphony-0.55.0 examples/performance/line_splitting.rb
polyphony-0.54.0 examples/performance/line_splitting.rb
polyphony-0.53.2 examples/performance/line_splitting.rb