X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=examples%2FBenchmarks%2Fbenchmark_datafetch.pl;fp=examples%2FBenchmarks%2Fbenchmark_datafetch.pl;h=25938f4155df79e8a643606558cc44858a1c6e20;hb=626282428d929eeb4f3947ebafbcbc1e0be2898e;hp=0000000000000000000000000000000000000000;hpb=df65d4da1dbe1d485bb7a35f9e71898d1193e277;p=dbsrgits%2FDBIx-Class.git diff --git a/examples/Benchmarks/benchmark_datafetch.pl b/examples/Benchmarks/benchmark_datafetch.pl new file mode 100755 index 0000000..25938f4 --- /dev/null +++ b/examples/Benchmarks/benchmark_datafetch.pl @@ -0,0 +1,38 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +use Benchmark qw/cmpthese/; +use FindBin; +use lib "$FindBin::Bin/../../t/lib"; +use lib "$FindBin::Bin/../../lib"; +use DBICTest::Schema; +use DBIx::Class::ResultClass::HashRefInflator; # older dbic didn't load it + +printf "Benchmarking DBIC version %s\n", DBIx::Class->VERSION; + +my $schema = DBICTest::Schema->connect ('dbi:SQLite::memory:'); +$schema->deploy; + +my $rs = $schema->resultset ('Artist'); +$rs->populate ([ map { { name => "Art_$_"} } (1 .. 10000) ]); + +my $dbh = $schema->storage->dbh; +my $sql = sprintf ('SELECT %s FROM %s %s', + join (',', @{$rs->_resolved_attrs->{select}} ), + $rs->result_source->name, + $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) : (), +});