Skip to content

Instantly share code, notes, and snippets.

@colinrymer
Last active December 19, 2015 01:59
Show Gist options
  • Save colinrymer/5879692 to your computer and use it in GitHub Desktop.
Save colinrymer/5879692 to your computer and use it in GitHub Desktop.
using Ruby 1.9.3-p327-perf
$ ruby split_benchmark.rb
naive_regex
6.320000 0.130000 6.450000 ( 6.798818)
naive_squeeze
6.770000 0.070000 6.840000 ( 7.122865)
assigned_regex
5.710000 0.060000 5.770000 ( 5.869347)
assigned_squeeze
5.420000 0.060000 5.480000 ( 5.589675)
require 'benchmark'
STRING = 'a^a^a^a^a^a^a^^b^^b^c'
REGEX = /^+/
SEARCH = '^'
TEST_ITERATIONS = ARGV.first || 1_000_000
def test(method)
puts method.to_s
puts Benchmark.measure { TEST_ITERATIONS.times { send(method) } }
end
def naive_regex
STRING.split(/^+/)
end
def naive_squeeze
STRING.squeeze('^').split('^')
end
def assigned_regex
STRING.split(REGEX)
end
def assigned_squeeze
STRING.squeeze(SEARCH).split(SEARCH)
end
[:naive_regex, :naive_squeeze, :assigned_regex, :assigned_squeeze].each do |method|
test method
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment