use strict; use warnings; use DBI; use Benchmark; my $hodbc = DBI->connect('dbi:ODBC:DSN=OracleODBC-11g;SID=devel','xxx','xxx'); my $horacle = DBI->connect('dbi:Oracle:host=oracle;sid=devel','xxx','xxx'); eval {$hodbc->do(q/drop table benchtest/)}; $hodbc->do(q/create table benchtest (a integer, b varchar(100))/); timethese(10, {'oracleinsert' => sub {insert($horacle)}, 'odbcinsert' => sub { insert($hodbc)}}); timethese(10, {'oracleselect' => sub {xselect($horacle)}, 'odbcselect' => sub { xselect($hodbc)}}); sub insert { my $h = shift; my $s = $h->prepare(q/insert into benchtest values(?,?)/); for (1..5000) { $s->execute($_, 'the quick brown fox jumps over the lazy dog'); } } sub xselect { my $h = shift; my $r = $h->selectall_arrayref(q/select * from benchtest/); } #### Benchmark: timing 10 iterations of odbcinsert, oracleinsert... odbcinsert: 54 wallclock secs ( 1.46 usr + 0.64 sys = 2.10 CPU) @ 4.76/s (n=10) oracleinsert: 54 wallclock secs ( 1.39 usr + 0.68 sys = 2.07 CPU) @ 4.83/s (n=10) Benchmark: timing 10 iterations of odbcselect, oracleselect... odbcselect: 10 wallclock secs ( 4.70 usr + 0.17 sys = 4.87 CPU) @ 2.05/s (n=10) oracleselect: 10 wallclock secs ( 5.14 usr + 0.01 sys = 5.15 CPU) @ 1.94/s (n=10)