Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- package World::Schema;
- use base qw/DBIx::Class::Schema::Loader/;
- $ENV{SCHEMA_LOADER_BACKCOMPAT} = 1;
- my $schema = World::Schema->connect( "DBI:mysql:database=world", "world", "world1",
- { PrintError => 1, RaiseError => 1, mysql_enable_utf8 => 1 } );
- package main;
- use DBIx::Connector;
- use DBIx::Struct;
- use strict;
- use warnings;
- use Benchmark qw|:all|;
- # used this world database https://dev.mysql.com/doc/index-other.html
- DBIx::Struct::connect( "DBI:mysql:database=world", "world", "world1" );
- my $connector =
- DBIx::Connector->new( "DBI:mysql:database=world", "world", "world1",
- { PrintError => 1, RaiseError => 1, mysql_enable_utf8 => 1 } );
- my $tests = {
- Struct => sub {
- my $cities = all_rows(
- [
- "city s" => -right => "country c" => -on => "s.CountryCode = c.Code" => -left =>
- "countrylanguage l" => -on => "l.CountryCode = c.Code",
- -columns => [ 's.Name city', 'c.Name country', 'Language language' ],
- ],
- -where => { Language => 'English' }
- );
- },
- StructFor => sub {
- my $cities = for_rows(
- [
- "city s" => -right => "country c" => -on => "s.CountryCode = c.Code" => -left =>
- "countrylanguage l" => -on => "l.CountryCode = c.Code",
- -columns => [ 's.Name city', 'c.Name country', 'Language language' ],
- ],
- -where => { Language => 'English' },
- sub { 1 }
- );
- },
- DBI => sub {
- my $dbh_cities = $connector->run(
- sub {
- $_->selectall_arrayref(
- qq{select s.Name city, c.Name country, Language language from city s}
- . qq{ right join country c on(s.CountryCode = c.Code)}
- . qq{ left join countrylanguage l on(l.CountryCode = c.Code)}
- . qq{ WHERE ( Language = ? )},
- { Slice => {} },
- 'English'
- );
- }
- );
- },
- DBIC => sub {
- $schema->resultset('Country')->search(
- { 'countrylanguages.Language' => 'English' },
- {
- join => [ 'cities', 'countrylanguages' ],
- select => [qw(cities.Name me.Name countrylanguages.Language)],
- as => [qw(city country language)]
- }
- )->all;
- }
- };
- cmpthese( -5, $tests );
- __END__
- Rate DBIC Struct StructFor DBI
- DBIC 123/s -- -66% -67% -80%
- Struct 361/s 194% -- -3% -40%
- StructFor 371/s 202% 3% -- -38%
- DBI 602/s 389% 67% 62% --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement