@@ -, +, @@ --- tmp/DiscreteCalendar_performance/README.txt | 1 + .../benchmark_checkins.pl | 59 +++++++++++++++++++++ .../checkins/1_after_100_issues_today.png | Bin 0 -> 27299 bytes .../checkins/1_before_100_issues_today.png | Bin 0 -> 19218 bytes .../checkins/2_after_100_issues.png | Bin 0 -> 19148 bytes .../checkins/2_before_100_issues.png | Bin 0 -> 19291 bytes .../checkins/README.txt | 3 ++ .../checkout/1_after_100_issues_today.png | Bin 0 -> 19217 bytes .../checkout/1_before_100_issues_today.png | Bin 0 -> 19210 bytes .../checkout/2_after_100_issues.png | Bin 0 -> 19225 bytes .../checkout/2_before_100_issues.png | Bin 0 -> 19101 bytes .../checkout/README.txt | 4 ++ .../fines.pl/README.txt | 1 + .../fines.pl/after.png | Bin 0 -> 19015 bytes .../fines.pl/before.png | Bin 0 -> 19538 bytes 15 files changed, 68 insertions(+) create mode 100644 tmp/DiscreteCalendar_performance/README.txt create mode 100644 tmp/DiscreteCalendar_performance/benchmark_checkins.pl create mode 100644 tmp/DiscreteCalendar_performance/checkins/1_after_100_issues_today.png create mode 100644 tmp/DiscreteCalendar_performance/checkins/1_before_100_issues_today.png create mode 100644 tmp/DiscreteCalendar_performance/checkins/2_after_100_issues.png create mode 100644 tmp/DiscreteCalendar_performance/checkins/2_before_100_issues.png create mode 100644 tmp/DiscreteCalendar_performance/checkins/README.txt create mode 100644 tmp/DiscreteCalendar_performance/checkout/1_after_100_issues_today.png create mode 100644 tmp/DiscreteCalendar_performance/checkout/1_before_100_issues_today.png create mode 100644 tmp/DiscreteCalendar_performance/checkout/2_after_100_issues.png create mode 100644 tmp/DiscreteCalendar_performance/checkout/2_before_100_issues.png create mode 100644 tmp/DiscreteCalendar_performance/checkout/README.txt create mode 100644 tmp/DiscreteCalendar_performance/fines.pl/README.txt create mode 100644 tmp/DiscreteCalendar_performance/fines.pl/after.png create mode 100644 tmp/DiscreteCalendar_performance/fines.pl/before.png --- a/tmp/DiscreteCalendar_performance/README.txt +++ a/tmp/DiscreteCalendar_performance/README.txt @@ -0,0 +1, @@ +The performance tests were done using Devel::NYTProf - Powerful fast feature-rich Perl source code profiler. --- a/tmp/DiscreteCalendar_performance/benchmark_checkins.pl +++ a/tmp/DiscreteCalendar_performance/benchmark_checkins.pl @@ -0,0 +1,59 @@ +use Modern::Perl; + +use DateTime; + +use C4::Biblio; +use C4::Circulation; +use C4::Items; +use C4::Members; +use Koha::Database; +use Data::Dumper; + +my $schema = Koha::Database->schema; +$schema->storage->txn_begin; + + +C4::Context->_new_userenv('xxx'); +C4::Context->set_userenv(0,0,0,'firstname','surname', 'VC', 'Midway Public Library', '', '', ''); +my $limit = 100; +my $dbh = C4::Context->dbh; +$dbh->do(q|DELETE FROM issues|); + +my @items = $dbh->selectall_array("SELECT barcode FROM items WHERE barcode IS NOT NULL LIMIT $limit", { Slice => {} }); +my @borrowers = $dbh->selectall_array("SELECT borrowernumber FROM borrowers WHERE borrowernumber IS NOT NULL LIMIT $limit", { Slice => {} }); + +############################ +# Checkouts +########################### + +sub checkouts { + + for (my $i = 0; $i < $limit; $i++) { + my $barcode = $items[$i]->{barcode}; + my $borrowernumber = $borrowers[$i]->{borrowernumber}; + my $borrower = GetMember( borrowernumber => $borrowernumber ); + + my $due_date = DateTime->new(year => 2016, month => 10, day => 1); + # my $due_date = DateTime->today; + my $issuedate = DateTime->new(year => 2016, month => 7, day => 1); + + AddIssue( $borrower, $barcode, $due_date, undef, $issuedate, undef, undef ); + } +} +checkouts(); +############################ +# Checkins +########################### + +sub checkins { + + for (my $i = 0; $i < $limit; $i++) { + my $barcode = $items[$i]->{barcode}; + + AddReturn($barcode, undef, undef, undef, DateTime->today); + } +} +checkins(); + +$schema->storage->txn_rollback; +1; --- a/tmp/DiscreteCalendar_performance/checkins/README.txt +++ a/tmp/DiscreteCalendar_performance/checkins/README.txt @@ -0,0 +1,3 @@ +This tests include 100 checkouts. +First done where due date is today for the 100 issues, no delay. +Second was done where the 100 issues where due date was more 2 months ago. --- a/tmp/DiscreteCalendar_performance/checkout/README.txt +++ a/tmp/DiscreteCalendar_performance/checkout/README.txt @@ -0,0 +1,4 @@ +First done when due date was today for the 100 issues. +Second was done when the 100 issues due date was than 2 months ago. + +PS: Results should be the same whether it's today or 2 months ago, the difference is probably due to hardware use.a --- a/tmp/DiscreteCalendar_performance/fines.pl/README.txt +++ a/tmp/DiscreteCalendar_performance/fines.pl/README.txt @@ -0,0 +1, @@ +This was done on 100 issues from a production database.