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

Reply via email to