https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=21828
Martin Renvoize <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #155176|0 |1 is obsolete| | --- Comment #9 from Martin Renvoize <[email protected]> --- Created attachment 155792 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=155792&action=edit Bug 21828: build $bib_heading_fields only once per invocation In UNIMARC instances, the run time of link_bibs_to_authorities.pl can be reduced by up to 80% and the number of DBI calls can be reduced by up to 90% with a very simple fix that optimises the constructor of the C4::Heading::UNIMARC object. Currently, the constructor resets the $bib_heading_fields hash *in each invocation* (i.e. for every field the bibliographic record contains), then populating it again with the results fetched from the database! This is inefficient. The patch/fix is trivial: we take advantage of the fact that $bib_heading_fields is declared at the top of the C4::Heading::UNIMARC module and is thus a package variable that is in scope for the entire execution of the program (more info here: https://stackoverflow.com/q/75317862). Placing the section that generates the $bib_heading_fields hash inside a "unless ( defined $bib_heading_fields )" code block is enough to cause a significant reduction in the number of "expensive" SQL SELECT queries that must be run. Test plan: 0) Have a UNIMARC instance with some sample data (the KTD one will do just fine for this experiment). 1) Run the following commands: $ ktd --shell k$ DBI_PROFILE=1 ./misc/link_bibs_to_authorities.pl -t Observe the output from the script and the DBI profiling info. [You may want to play with different DBI_PROFILE levels (such as 2, 4, 6, 8, etc.) to see what's going on under the hood DBI-wise, for reference see: https://metacpan.org/pod/DBI::Profile] 2) Apply this patch. 3) Rerun the script from step 1), it should run a lot faster! Signed-off-by: David Nind <[email protected]> Signed-off-by: Martin Renvoize <[email protected]> -- You are receiving this mail because: You are watching all bug changes. _______________________________________________ Koha-bugs mailing list [email protected] https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
