Bug 16221: Use Storable::dclone() instead of Clone::clone() for L1 cache deep-copying mode
Storable dclone() is over 3x faster then Clone::clone() when used for creating a deep copies of the big, complex data structures like MARC frameworks. See also Bug 16044 comments #18 & #20. This is a trivial version of Bug 16166. Performance test results (see Bug 16140 comment #23 for test setup description): master 146.29 (14.64+14.53+14.51+14.57+14.72+14.56+14.53+15.06+14.56+14.61) master + Bug 16221 96.5 (9.77+9.63+9.77+9.77+9.68+9.05+9.68+9.83+9.63+9.69) master + Bug 16166 90.7 (9.15+9.10+9.16+8.41+9.19+9.19+9.11+9.19+9.02+9.18) Bug 16166 is a bit faster and more comprehensive implementation, but also more complex and harder to test/evaluate. Test plan: 1) apply patch 2) profile GetMarcStructure() calls before / after patch, e.g. by running some script which calls it often (like catalogue search w/ XSLT processing turned on, etc.) Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@unc.edu.ar> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
bba892fde5
commit
0c6f23a6ce
1 changed files with 2 additions and 2 deletions
|
@ -38,7 +38,7 @@ The first, traditional OO interface provides the following functions:
|
|||
use strict;
|
||||
use warnings;
|
||||
use Carp;
|
||||
use Clone qw( clone );
|
||||
use Storable qw(dclone);
|
||||
use Module::Load::Conditional qw(can_load);
|
||||
use Koha::Cache::Object;
|
||||
|
||||
|
@ -328,7 +328,7 @@ sub get_from_cache {
|
|||
# Or if we do not need to deep copy
|
||||
return $L1_cache{$key}
|
||||
if not ref $L1_cache{$key} or $unsafe;
|
||||
return clone $L1_cache{$key};
|
||||
return dclone $L1_cache{$key};
|
||||
}
|
||||
|
||||
my $get_sub = $self->{ref($self->{$cache}) . "_get"};
|
||||
|
|
Loading…
Reference in a new issue