#!/usr/bin/perl use strict; use warnings; use Benchmark ':hireswallclock'; use DBI (); my $DBH; setup_db(); Benchmark::timethis( 1, \&db_benchmark ); sub db_benchmark { my $sth = $DBH->prepare( 'INSERT INTO benchmark ( id ) VALUES ( ? )' ); $DBH->begin_work; my $i = 0; while ( $i < 1_000_000 ) { $sth->execute( $i ); $i++; } $DBH->commit; return; } sub setup_db { $DBH = DBI->connect( "dbi:SQLite:dbname=benchmark.sqlite", "", "", { 'RaiseError' => 1 } ); if ( ! $DBH->tables( undef, undef, 'benchmark', 'TABLE' ) ) { $DBH->do( 'CREATE TABLE benchmark ( id INTEGER )' ); } return; }