ManKyu Han wrote:
Hi.  I installed DBD::DBM through cpan and everything seems fine.
I wanted to benchmark DBD::DBM's performance, so I did simple test.
I populate table that I created with 200000 integer and strings.
In mysql, it was going almost 7000 inserts / sec
but in DBD::DBM,  the best I could get was 130/sec
Your tests are flawed see below. OTOH, DBD::DBM is unlikely to be able to compete with MySQL or even SQLite for speed.
Is there some optimization that I should do?
If your SQL needs are light, use DBI::SQL::Nano instead of SQL::Statement. And, especially note the next point:
foreach my $sql (@sql_i){
        my $sth = $dbh->prepare($sql);
        $sth->execute;
        $count++;
        if($count%2000 eq 0){
                mkUtil::printTime("$count");
        }
}
In DBD::DBM, prepare() takes a fair amount of time. If you prepare once outside the loop then execute many times in the loop using placeholders you will gain *lots* of time. This is true of most DBDs but especially true of DBD::DBM and other SQL::Statement based DBDs.

Also, you might consider using DBI's new profiling capabilities or even Benchmark when doing tests.

--
Jeff

Reply via email to