#!/usr/bin/perl use strict; use warnings; use Log::Log4perl; use Benchmark qw(cmpthese); use Config; my $conf = q( log4perl.category.bench = INFO, ScreenAppender log4perl.appender.ScreenAppender = Log::Log4perl::Appender::Screen log4perl.appender.ScreenAppender.stderr = 1 log4perl.appender.ScreenAppender.layout = PatternLayout log4perl.appender.ScreenAppender.layout.ConversionPattern=[%p] %d %F:%L - %m%n log4perl.appender.ScreenAppender.Threshold = DEBUG ); Log::Log4perl::init(\$conf); my $log = Log::Log4perl::get_logger("bench"); sub fib_log_buffer { my @fibonacci = (0, 1); my ($n, $sum) = (1, 0); while ($n < 1_000_000) { $log->debug(qq{n:$n}); $n = $fibonacci[$#fibonacci] + $fibonacci[ $#fibonacci - 1 ]; push @fibonacci, $n; $sum += $n if (($n % 2) == 0); } $log->debug(qq{n:$n}); return $sum; } sub fib_log_buffer_is_chk { my @fibonacci = (0, 1); my ($n, $sum) = (1, 0); while ($n < 1_000_000) { $log->debug(qq{n:$n}) if $log->is_debug(); $n = $fibonacci[$#fibonacci] + $fibonacci[ $#fibonacci - 1 ]; push @fibonacci, $n; $sum += $n if (($n % 2) == 0); } $log->debug(qq{n:$n}) if $log->is_debug(); return $sum; } # ------ main ------ print $Config{archname} ."\n"; cmpthese( -1, { 'fib_log_buffer' => sub { fib_log_buffer() }, 'fib_log_buffer_is_chk' => sub { fib_log_buffer_is_chk() }, } ); __END__