Created
January 5, 2012 16:56
-
-
Save ktat/1566118 to your computer and use it in GitHub Desktop.
Benchmark of Query Builder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
use SQL::Maker; | |
use SQL::Abstract; | |
use SQL::Abstract::More; | |
use Benchmark qw/cmpthese/; | |
my $sql_abstract_more = new SQL::Abstract::More(); | |
my $sql_abstract = new SQL::Abstract(); | |
cmpthese(0, | |
{ | |
sql_maker => \&sql_maker, | |
# sql_abstract => \&sql_abstract, | |
# sql_abstract_more => \&sql_abstract_more, | |
sql_abstract => \&sql_abstract_prepared, | |
sql_abstract_more => \&sql_abstract_more_prepared, | |
}); | |
sub sql_maker { | |
my $q = SQL::Maker::Select->new(driver => 'mysql'); | |
my $c1 = SQL::Maker::Condition->new; | |
$c1->add(hoge => 1); | |
my $c2 = SQL::Maker::Condition->new; | |
$c2->add(fuga => 2); | |
my $c3 = SQL::Maker::Condition->new; | |
$c3->add(xxx => 2); | |
$q->add_from('hoge')->set_where(($c1 | $c2) & $c3)->add_select('id'); | |
my $s = $q->as_sql; | |
my @binds = $q->bind; | |
} | |
sub sql_abstract { | |
my $sql = new SQL::Abstract; | |
my ($s, @binds) =$sql->select('hoge', ['id'], {-or => [{hoge => 1}, {fuga => 2}], xxx => 2}); | |
} | |
sub sql_abstract_prepared { | |
my ($s, @binds) = $sql_abstract->select('hoge', ['id'], {-or => [{hoge => 1}, {fuga => 2}], xxx => 2}); | |
} | |
sub sql_abstract_more { | |
my $sql = new SQL::Abstract::More; | |
my ($s, @binds) =$sql->select(-from => 'hoge', -columns => ['id'], -where => {-or => [{hoge => 1}, {fuga => 2}], xxx => 2}); | |
} | |
sub sql_abstract_more_prepared { | |
my ($s, @binds) =$sql_abstract_more->select(-from => 'hoge', -columns => ['id'], -where => {-or => [{hoge => 1}, {fuga => 2}], xxx => 2}); | |
} | |
__END__ | |
Rate sql_abstract_more sql_abstract sql_maker | |
sql_abstract_more 2692/s -- -21% -64% | |
sql_abstract 3422/s 27% -- -55% | |
sql_maker 7566/s 181% 121% -- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment