diff options
Diffstat (limited to 't/013Bench.t')
-rw-r--r-- | t/013Bench.t | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/t/013Bench.t b/t/013Bench.t new file mode 100644 index 0000000..a37267a --- /dev/null +++ b/t/013Bench.t @@ -0,0 +1,144 @@ +BEGIN { + if($ENV{INTERNAL_DEBUG}) { + require Log::Log4perl::InternalDebug; + Log::Log4perl::InternalDebug->enable(); + } +} + +use Test; +use Benchmark qw/timeit timestr/; +use Log::Log4perl; + +$count = 100_000; + +unless ($ENV{LOG4PERL_BENCH}) { + print "set \$ENV{LOG4PERL_BENCH} to a true value to run benchmarks, skipping...\n"; + ok(1); + exit; +} + +$conf = <<EOL; + +#specify LOGLEVEL, appender1, appender2, ... +log4j.category.simplelayout = INFO, simpleLayoutAppndr + +log4j.category.patternlayout = INFO, PatternLayoutAppndr + +log4j.category.multiappender = INFO, PatternLayoutAppndr, 2ndPatternLayoutAppndr, +log4j.category.multiappender.c1 = INFO, 3rdPatternLayoutAppndr +log4j.category.multiappender.c1.c2 = INFO, 2ndPatternLayoutAppndr + + + +# --------------------------------------------- +# PatternLayoutAppndr +log4j.appender.PatternLayoutAppndr = Log::Log4perl::Appender::TestBuffer +log4j.appender.PatternLayoutAppndr.layout = org.apache.log4j.PatternLayout +log4j.appender.PatternLayoutAppndr.layout.ConversionPattern=%d %4r [%t] %-5p %c %t - %m%n + +# --------------------------------------------- +# 2ndPatternLayoutAppndr +log4j.appender.2ndPatternLayoutAppndr = Log::Log4perl::Appender::TestBuffer +log4j.appender.2ndPatternLayoutAppndr.layout = org.apache.log4j.PatternLayout +log4j.appender.2ndPatternLayoutAppndr.layout.ConversionPattern=%d %4r [%t] %-5p %c %t - %m%n + +# --------------------------------------------- +# 3rdPatternLayoutAppndr +log4j.appender.3rdPatternLayoutAppndr = Log::Log4perl::Appender::TestBuffer +log4j.appender.3rdPatternLayoutAppndr.layout = org.apache.log4j.PatternLayout +log4j.appender.3rdPatternLayoutAppndr.layout.ConversionPattern=%d %4r [%t] %-5p %c %t - %m%n + + +# --------------------------------------------- +# a SimpleLayout +log4j.appender.simpleLayoutAppndr = Log::Log4perl::Appender::TestBuffer +log4j.appender.simpleLayoutAppndr.layout = org.apache.log4j.SimpleLayout + + + + +EOL + +Log::Log4perl::init(\$conf); + +$simplelayout = Log::Log4perl->get_logger('simplelayout'); + +$basecategory = Log::Log4perl->get_logger('patternlayout'); + +$firstlevelcategory = Log::Log4perl->get_logger('patternlayout.foo'); + +$secondlevelcategory = Log::Log4perl->get_logger('patternlayout.foo.bar'); + +print "Iterations: $count\n\n"; + + +print "Just is_debug/info/warn/error/fatal() methods: \n"; +$t = timeit $count, sub{my $v = $basecategory->is_debug(); + $v = $basecategory->is_info(); + $v = $basecategory->is_warn(); + $v = $basecategory->is_error(); + $v = $basecategory->is_fatal(); + }; +print timestr($t),"\n\n"; + +print "no logging: \n"; +$t = timeit $count, sub{$basecategory->debug('debug message')}; +print timestr($t),"\n\n"; + +print "a simple layout: \n"; +$t = timeit $count, sub{$simplelayout->info('info message')}; +print timestr($t),"\n\n"; + +print "pattern layout: \n"; +$t = timeit $count, sub {$basecategory->info('info message')}; +print timestr($t),"\n\n"; + +print "one level inheritance, no logging: \n"; +$t = timeit $count, sub {$firstlevelcategory->debug('debug message')}; +print timestr($t),"\n\n"; + +print "one level inheritance, logging: \n"; +$t = timeit $count, sub {$firstlevelcategory->info('info message')}; +print timestr($t),"\n\n"; + +print "two level inheritance, no logging: \n"; +$t = timeit $count, sub {$secondlevelcategory->debug('debug message')}; +print timestr($t),"\n\n"; + +print "two level inheritance, logging \n"; +$t = timeit $count, sub {$secondlevelcategory->info('info message')}; +print timestr($t),"\n\n"; + +#free up some memory? +undef($basecategory); +undef ($firstlevelcategory); +undef($secondlevelcategory); + + +$multi1 = Log::Log4perl->get_logger('multiappender'); +$multi2 = Log::Log4perl->get_logger('multiappender.c1'); +$multi3 = Log::Log4perl->get_logger('multiappender.c1.c2'); + +print "two appenders: \n"; +$t = timeit $count, sub {$multi1->info('info message')}; +print timestr($t),"\n\n"; + +print "three appenders, one level of inheritance: \n"; +$t = timeit $count, sub {$multi2->info('info message')}; +print timestr($t),"\n\n"; + +print "same appenders, two levels of inheritance: \n"; +$t = timeit $count, sub {$multi3->info('info message')}; +print timestr($t),"\n\n"; + + + + + + +print + + +ok(1); + +BEGIN { plan tests => 1, } |