summaryrefslogtreecommitdiff
path: root/t/013Bench.t
diff options
context:
space:
mode:
Diffstat (limited to 't/013Bench.t')
-rw-r--r--t/013Bench.t144
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, }