-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathbenchmark.rb
42 lines (32 loc) · 1.25 KB
/
benchmark.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# frozen_string_literal: true
require "#{File.dirname(__FILE__)}/setup"
require 'log4jruby'
require 'benchmark'
Log4jruby::Logger.root.log4j_logger.removeAllAppenders
OUT = File.open('/dev/null', 'a').freeze
formatter = Class.new do
def call(_severity, _time, _name, msg)
msg
end
end.new
root_logger = Log4jruby::Logger.root
log4j = root_logger.log4j_logger
std_logger = ::Logger.new(OUT)
logger_a = Log4jruby::Logger.get('a')
logger_a_b = Log4jruby::Logger.get('a.b')
logger_c = Log4jruby::Logger.get('c', tracing: true)
logger_d = Log4jruby::Logger.get('d', formatter: formatter)
root_logger.debug('warmup')
repeat = 200_000
puts "Benchmark with #{repeat} log statements"
Benchmark.bmbm do |x|
x.report('puts') { (1..repeat).each { |i| OUT.puts(i) } }
x.report('standard logger') { (1..repeat).each { |i| std_logger.debug(i) } }
x.report('raw log4j') { (1..repeat).each { |i| log4j.debug(i) } }
x.report('root') { (1..repeat).each { |i| root_logger.debug(i) } }
x.report('a') { (1..repeat).each { |i| logger_a.debug(i) } }
x.report('a.b') { (1..repeat).each { |i| logger_a_b.debug(i) } }
x.report('w. tracing') { (1..repeat).each { |i| logger_c.debug(i) } }
x.report('w. formatter') { (1..repeat).each { |i| logger_d.debug(i) } }
end
OUT.close