Initial full test pass - all fetches are eager for now
[dbsrgits/DBIx-Class.git] / examples / Benchmarks / benchmark_datafetch.pl
CommitLineData
f54428ab 1#!/usr/bin/env perl
caca5e19 2
3use strict;
4use warnings;
5
5f9c6cda 6use Benchmark qw/cmpthese/;
caca5e19 7use FindBin;
62628242 8use lib "$FindBin::Bin/../../t/lib";
9use lib "$FindBin::Bin/../../lib";
5f9c6cda 10use DBICTest::Schema;
21374921 11use DBIx::Class::ResultClass::HashRefInflator; # older dbic didn't load it
12
13printf "Benchmarking DBIC version %s\n", DBIx::Class->VERSION;
caca5e19 14
5f9c6cda 15my $schema = DBICTest::Schema->connect ('dbi:SQLite::memory:');
16$schema->deploy;
17
caca5e19 18my $rs = $schema->resultset ('Artist');
908aa1bb 19
20my $hri_rs = $rs->search ({}, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } );
21
22#DB::enable_profile();
23#my @foo = $hri_rs->all;
24#DB::disable_profile();
25#exit;
caca5e19 26
5f9c6cda 27my $dbh = $schema->storage->dbh;
28my $sql = sprintf ('SELECT %s FROM %s %s',
29 join (',', @{$rs->_resolved_attrs->{select}} ),
30 $rs->result_source->name,
31 $rs->_resolved_attrs->{alias},
32);
33
908aa1bb 34for (1,10,20,50,200,2500,10000) {
35 $rs->delete;
36 $rs->populate ([ map { { name => "Art_$_"} } (1 .. $_) ]);
37 print "\nRetrieval of $_ rows\n";
38 bench();
39}
40
41sub bench {
42 cmpthese(-3, {
43 Cursor => sub { my @r = $rs->cursor->all },
44 HRI => sub { my @r = $hri_rs->all },
45 RowObj => sub { my @r = $rs->all },
46 DBI_AoH => sub { my @r = @{ $dbh->selectall_arrayref ($sql, { Slice => {} }) } },
47 DBI_AoA=> sub { my @r = @{ $dbh->selectall_arrayref ($sql) } },
48 });
49}