Sha256: d93652525a3937381bff65ad167758870fefb70300ecf84f15bd37dd916c7175

Contents?: true

Size: 1.86 KB

Versions: 4

Compression:

Stored size: 1.86 KB

Contents

# $Id: benchmark.rb 2 2007-01-09 18:10:50Z tim_pease $

begin
  require 'logging'
rescue LoadError
  require 'rubygems'
  require 'logging'
end

begin
  require 'rubygems'
  require 'log4r'
  $log4r = true
rescue LoadError
  $log4r = false
end

require 'benchmark'
require 'stringio'
require 'logger'

module Logging
  class Benchmark

    def run
      this_many = 100_000

      sio = StringIO.new

      ::Logging::Logger[:root].level = 'warn'
      logging = ::Logging::Logger[self]
      logging.add ::Logging::Appenders::IO.new('benchmark', sio)

      logger = ::Logger.new sio
      logger.level = ::Logger::WARN

      log4r = if $log4r
        x = ::Log4r::Logger.new('benchmark')
        x.level = ::Log4r::WARN
        x.add ::Log4r::IOOutputter.new('benchmark', sio)
        x
      end

      puts "== Debug (not logged) ==\n"
      ::Benchmark.bm(10) do |bm|
        bm.report('Logging:') {this_many.times {logging.debug 'not logged'}}
        bm.report('Logger:') {this_many.times {logger.debug 'not logged'}}
        bm.report('Log4r:') {this_many.times {log4r.debug 'not logged'}} if log4r
      end

      puts "\n== Warn (logged) ==\n"
      ::Benchmark.bm(10) do |bm|
        sio.seek 0
        bm.report('Logging:') {this_many.times {logging.warn 'logged'}}
        sio.seek 0
        bm.report('Logger:') {this_many.times {logger.warn 'logged'}}
        sio.seek 0
        bm.report('Log4r:') {this_many.times {log4r.warn 'logged'}} if log4r
      end

      puts "\n== Concat ==\n"
      ::Benchmark.bm(10) do |bm|
        sio.seek 0
        bm.report('Logging:') {this_many.times {logging << 'logged'}}
        sio.seek 0
        bm.report('Logger:') {this_many.times {logger << 'logged'}}
        puts "Log4r:      not supported" if log4r
      end
    end

  end  # class Benchmark
end  # module Logging


if __FILE__ == $0
  bm = ::Logging::Benchmark.new
  bm.run
end

# EOF

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logging-0.3.1 test/benchmark.rb
logging-0.3.0 test/benchmark.rb
logging-0.1.0 test/benchmark.rb
logging-0.2.0 test/benchmark.rb