summaryrefslogtreecommitdiff
path: root/t/013Bench.t
blob: a37267ada999e063c236b58714be2d625a578b57 (plain)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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, }