Q4M人柱その2

| コメント(0) | トラックバック(0)
rev40のq4mを使ってベンチマーク。といっても単純にSELECTとINSERTのベンチのみ。
use strict; use warnings; use DBI; use Time::HiRes qw(time); my $TEST_ROWS = $ENV{TEST_ROWS} || 1024; my $dbh = DBI->connect( $ENV{DBI} || 'dbi:mysql:database=test;host=localhost', $ENV{DBI_USER} || 'root', $ENV{DBI_PASSWORD} || '', ) or die 'connection failed:'; $dbh->do('drop table if exists q4m_t'); $dbh->do('create table q4m_t (v int not null) engine=queue'); my $insert_time = 0; my $select_time = 0; my $insert = $dbh->prepare("insert into q4m_t (v) values (?)"); for (my $i = 0; $i < $TEST_ROWS; $i++) { my $start = time(); $insert->execute($i); $insert_time += time() - $start; } my $sth = $dbh->prepare("select queue_wait('test.q4m_t')"); for(0..$TEST_ROWS - 1) { my $start = time(); if ($sth->execute()) { my $h = $sth->fetchrow_hashref(); } else { last; } $select_time += time() - $start; } $dbh->do('select queue_end()'); print STDERR "$TEST_ROWS items used\n"; print STDERR " avg insert time: ", $insert_time / $TEST_ROWS, "\n"; print STDERR " avg select time: ", $select_time / $TEST_ROWS, "\n";


このスクリプトに対して、128、256、512アイテムでテスト
daisuke@beefcake q4m$ env TEST_ROWS=128 perl queue.pl 128 items used avg insert time: 0.0969786122441292 avg select time: 0.0974297747015953 daisuke@beefcake q4m$ env TEST_ROWS=256 perl queue.pl 256 items used avg insert time: 0.107754170894623 avg select time: 0.115405934862792 daisuke@beefcake q4m$ env TEST_ROWS=512 perl queue.pl 512 items used avg insert time: 0.0976005531847477 avg select time: 0.0964000821113586

俺のMac 10.5で他のブラウザとか動かしながらでこんな感じ。

うーん、queue_wait()にWHERE使えると嬉しいなぁ・・・

Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ