Created
May 1, 2019 18:58
-
-
Save konovod/928318fa70eef9939dac90168e54ea50 to your computer and use it in GitHub Desktop.
join bench
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark" | |
module Enumerable | |
def j8r_join(separator, io) | |
first = true | |
each do |elem| | |
io << separator unless first | |
yield elem, io | |
first = false | |
end | |
end | |
def new_join(separator, io) | |
first = true | |
each do |elem| | |
io << separator unless first | |
yield elem, io | |
first = false if first | |
end | |
end | |
end | |
SINGLE = Array.new(9, 123) | |
DOUBLE = Array.new(99, 123) | |
TRIPLE = Array.new(999, 123) | |
QUADRUPLE = Array.new(9999, 123) | |
QUINTUPLE = Array.new(99999, 123) | |
SEXTUPLE = Array.new(999999, 123) | |
SEPTUPLE = Array.new(9999999, 123) | |
Benchmark.ips do |x| | |
x.report("single j8r join") { SINGLE.j8r_join("", STDOUT) {|e|} } | |
x.report("single new join") { SINGLE.new_join("", STDOUT) {|e|} } | |
x.report("single std join") { SINGLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("double j8r join") { DOUBLE.j8r_join("", STDOUT) {|e|} } | |
x.report("double new join") { DOUBLE.new_join("", STDOUT) {|e|} } | |
x.report("double std join") { DOUBLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("triple j8r join") { TRIPLE.j8r_join("", STDOUT) {|e|} } | |
x.report("triple new join") { TRIPLE.new_join("", STDOUT) {|e|} } | |
x.report("triple std join") { TRIPLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("quadruple new join") { QUADRUPLE.new_join("", STDOUT) {|e|} } | |
x.report("quadruple j8r join") { QUADRUPLE.j8r_join("", STDOUT) {|e|} } | |
x.report("quadruple std join") { QUADRUPLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("quintuple j8r join") { QUINTUPLE.j8r_join("", STDOUT) {|e|} } | |
x.report("quintuple new join") { QUINTUPLE.new_join("", STDOUT) {|e|} } | |
x.report("quintuple std join") { QUINTUPLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("sextuple j8r join") { SEXTUPLE.j8r_join("", STDOUT) {|e|} } | |
x.report("sextuple new join") { SEXTUPLE.new_join("", STDOUT) {|e|} } | |
x.report("sextuple std join") { SEXTUPLE.join("", STDOUT) {|e|} } | |
end | |
Benchmark.ips do |x| | |
x.report("septuple j8r join") { SEPTUPLE.j8r_join("", STDOUT) {|e|} } | |
x.report("septuple new join") { SEPTUPLE.new_join("", STDOUT) {|e|} } | |
x.report("septuple std join") { SEPTUPLE.join("", STDOUT) {|e|} } | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment