#!/usr/bin/perl
use Benchmark qw(cmpthese);
cmpthese(1000,{\'DBI\'=> \\&selDBI, \'MySql\'=> \\&selMysql});
sub selDBI()
{
use DBI;
my $dbh=DBI->connect("DBI:mysql:database=test;host=localhost","root",\'\',{RaiseError=>1});
$sth=$dbh->prepare_cached("select * from test");
$sth->execute();
while(my @ar=$sth->fetchrow_array())
{
}
$dbh->disconnect();
}
sub selMysql {
use Mysql;
my $dbh = Mysql->connect(\'localhost\',\'test\',\'root\',\'\');
my $sth=$dbh->query("select * from test");
while(my @arr=$sth->fetchrow())
{
}
undef $dbh;
}
---------- Perl Run ----------
Benchmark: timing 1000 iterations of DBI, MySql...
DBI: 160 wallclock secs (160.17 usr + 0.00 sys = 160.17 CPU) @ 6.24/s (n=1000)
MySql: 181 wallclock secs (181.58 usr + 0.00 sys = 181.58 CPU) @ 5.51/s (n=1000)
Rate MySql DBI
MySql 5.51/s -- -12%
DBI 6.24/s 13% --
Normal Termination
Output completed (5 min 48 sec consumed).
Вот так! DBI - рулит!