develooper Front page | perl.perl6.users | Postings from July 2017

Log::Any performances

From:
Julien Simonet
Date:
July 14, 2017 11:11
Subject:
Log::Any performances
Message ID:
CABFBr-eOMB37vXXLgENLdSAqXjX-Sx1dGYxi+rec1=4q5qemCg@mail.gmail.com
Hello,

My question is about Log::Any and performances.

When Log::Any was integrated into Bailador, a problem of performances was
found (https://github.com/jsimonet/log-any/issues/1).

Log::Any is a class using the singleton pattern, which have a list of
Log::Any::Pipeline instances as a parameter. These pipelines allows to
define alternatives paths for logs. By default, a "_default" pipeline is
added and used (
https://github.com/jsimonet/log-any/blob/master/lib/Log/Any.pm6#L14).

While testing to find where the time is spent and how I can improve things,
I noted that calling the method Log::Any.add( Log::Any::Pipeline.new,
:overwrite ) (
https://github.com/jsimonet/log-any/blob/master/lib/Log/Any.pm6#L91) in
Bailador::App::before-log() (
https://github.com/Bailador/Bailador/commit/efdc60dc0eb8a04b30dd13dcdd43bb97cee50042)
greatly improve performances.

The problem is this call does not change anything to Log::Any
configuration: the "_default" pipeline is just replaced by a new one which
has the same attributes.

I do not understand where the performance loss is located, if someone could
look and find something, we could remove the hack from Bailador :)

-- 
Julien Simonet



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About