Hi, I tried to speed up a query using DBIx::Class::ResultClass::HashRefInflator recently. Apparently there was no performance gain, so I did the benchmark you can find at the end of this message (I only did 50 iterations because I didn't want to wait hours for a result and the performance gap is quite obvious even for very few iterations). The query used below returns 2403 rows. Also the inflate_result method of a related class crashed when I didn't select the corresponding foreign key column which implies that object creation took place. BTW, I get similar results when passing the result_class as an attribute.
Then I found http://lists.scsys.co.uk/pipermail/dbix-class/2008-February/005733.html which would explain my observations. Has the patch discussed there already been applied? I couldn't find it mentioned in the CHANGES file of DBIx::Class. So I'd like to know if I just misunderstood the docs or if I should resort to plain DBI for performance critical queries. Am I doing anything wrong in my code or is this just the behaviour of DBIx::Class::ResultSet? Bye, Jochen use strict; use warnings; use Benchmark qw( cmpthese ); use DBI; use lib '../MyApp/lib/'; use MyAppDB; my $dbh = DBI->connect(...); my $schema = MyAppDB->connect(...); cmpthese( 50, { dbic => \&dbic, hashrefinflator => \&dbic_HashRefInflator, plain_dbi => \&plain_dbi }); sub dbic { my @req = $schema->resultset('MyAppDB::Request')->search( {message_id => \"IN (173, 174, 171, 1, 168, 144, 177, 111, 178, 172, 95, 196, 179)"}, { columns=>[qw/ id message_id created status amount /] }, ); } sub dbic_HashRefInflator { my $resultset = $schema->resultset('MyAppDB::Request'); $resultset->result_class('DBIx::Class::ResultClass::HashRefInflator'); my @req = $resultset->search( {message_id => \"IN (173, 174, 171, 1, 168, 144, 177, 111, 178, 172, 95, 196, 179)"}, { columns=>[qw/ id message_id created status amount /] }, ); } sub plain_dbi { my $query = $dbh->prepare('SELECT id, message_id, created, status, amount FROM requests WHERE message_id IN (173, 174, 171, 1, 168, 144, 177, 111, 178, 172, 95, 196, 179)'); my $result = $query->execute(); } (warning: too few iterations for a reliable count) s/iter hashrefinflator dbic plain_dbi hashrefinflator 6.30 -- -0% -100% dbic 6.27 0% -- -100% plain_dbi 1.40e-03 449729% 447671% -- _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk