X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=examples%2FBenchmarks%2Fbenchmark_datafetch.pl;h=7283e8708c88cb449bb0ea4bfce62c547f430bb3;hb=908aa1bb761ec1da5c061fe9f687598e3f1934bc;hp=25938f4155df79e8a643606558cc44858a1c6e20;hpb=fe0708a2d68b5d34b6bc6f7e70164c3e569f1dd0;p=dbsrgits%2FDBIx-Class.git diff --git a/examples/Benchmarks/benchmark_datafetch.pl b/examples/Benchmarks/benchmark_datafetch.pl index 25938f4..7283e87 100755 --- a/examples/Benchmarks/benchmark_datafetch.pl +++ b/examples/Benchmarks/benchmark_datafetch.pl @@ -16,7 +16,13 @@ my $schema = DBICTest::Schema->connect ('dbi:SQLite::memory:'); $schema->deploy; my $rs = $schema->resultset ('Artist'); -$rs->populate ([ map { { name => "Art_$_"} } (1 .. 10000) ]); + +my $hri_rs = $rs->search ({}, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } ); + +#DB::enable_profile(); +#my @foo = $hri_rs->all; +#DB::disable_profile(); +#exit; my $dbh = $schema->storage->dbh; my $sql = sprintf ('SELECT %s FROM %s %s', @@ -25,14 +31,19 @@ my $sql = sprintf ('SELECT %s FROM %s %s', $rs->_resolved_attrs->{alias}, ); -my $compdbi = sub { - my @r = $schema->storage->dbh->selectall_arrayref ('SELECT * FROM ' . ${$rs->as_query}->[0] ) -} if $rs->can ('as_query'); - -cmpthese(-3, { - Cursor => sub { $rs->reset; my @r = $rs->cursor->all }, - HRI => sub { $rs->reset; my @r = $rs->search ({}, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } )->all }, - RowObj => sub { $rs->reset; my @r = $rs->all }, - RawDBI => sub { my @r = $dbh->selectall_arrayref ($sql) }, - $compdbi ? (CompDBI => $compdbi) : (), -}); +for (1,10,20,50,200,2500,10000) { + $rs->delete; + $rs->populate ([ map { { name => "Art_$_"} } (1 .. $_) ]); + print "\nRetrieval of $_ rows\n"; + bench(); +} + +sub bench { + cmpthese(-3, { + Cursor => sub { my @r = $rs->cursor->all }, + HRI => sub { my @r = $hri_rs->all }, + RowObj => sub { my @r = $rs->all }, + DBI_AoH => sub { my @r = @{ $dbh->selectall_arrayref ($sql, { Slice => {} }) } }, + DBI_AoA=> sub { my @r = @{ $dbh->selectall_arrayref ($sql) } }, + }); +}