Skip to content

Commit

Permalink
Add benchmark for IO#print
Browse files Browse the repository at this point in the history
This tests the overhead of a method that calls print, given the
optimization in jruby#8249.
  • Loading branch information
headius committed May 21, 2024
1 parent 452e79b commit ee3ac19
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions bench/bench_print.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
require 'benchmark/ips'

def do_print0(io)
io.print
end

def do_print1(io)
io.print ?x
end

def do_print2(io)
io.print ?x, ?x
end

def do_print3(io)
io.print ?x, ?x, ?x
end

def do_print4(io)
io.print ?x, ?x, ?x, ?x
end

Benchmark.ips do |bm|
io = File.open(IO::NULL, 'w')

bm.report("print no arg") do |i|
while i > 0
i-=1
do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io);do_print0(io)
end
end

bm.report("print one arg") do |i|
while i > 0
i-=1
do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io);do_print1(io)
end
end

bm.report("print two arg") do |i|
while i > 0
i-=1
do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io);do_print2(io)
end
end

bm.report("print three arg") do |i|
while i > 0
i-=1
do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io);do_print3(io)
end
end

bm.report("print four arg") do |i|
while i > 0
i-=1
do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io);do_print4(io)
end
end
end

0 comments on commit ee3ac19

Please sign in to comment.