# $Id: /mirror/coderepos/lang/perl/Queue-Q4M/trunk/misc/lib/Queue/Q4M/Benchmark/Plugin/Default.pm 65253 2008-07-08T02:20:49.109770Z daisuke $ package Queue::Q4M::Benchmark::Plugin::Default; use Moose; use Time::HiRes qw(time); with 'Queue::Q4M::Benchmark::Plugin'; has 'table' => ( is => 'rw', isa => 'Str', required => 1, default => 'q4mbench_default' ); no Moose; sub setup { my ($self, $c) = @_; my $table = $self->table; my $dbh = $c->dbh; $dbh->do(<do("DELETE FROM $table"); print "populating $table with ", $c->items, " items\n"; my $max = $c->items; my $i = 0; while ($max > $i) { $i++; $dbh->do("INSERT INTO $table (data) VALUES (?)", undef, $c->random_string(64)); print " + $i\n" if $i % 100 == 0; } $c->add_task( name => 'default', coderef => sub { my $queue = Queue::Q4M->connect( connect_info => [ $c->connect_info ], ); my $start = time(); print " + Start ", scalar(localtime($start)), "\n"; my $count = 0; while ( $queue->next($table, 1) ) { my $h = $queue->fetch_hashref; $count++; } my $end = time(); my $duration = $end - $start; my $avg = $duration / $count; print " + End ", scalar(localtime($end)), "\n"; print " + Processed $count messages in ", $duration, " secs, average $avg mess/sec\n"; } ); } 1;