Archive for October, 2005

PHP5.1.0RC1でPDOとADODB、PEAR::DBのベンチマーク(PostgreSQL&MySQL)

Oct 29 2005 Published by funaki under いじる

PHP5.1辺りでどうやら5系に乗り換えても良さそうな雰囲気が漂っていますが、データベースに接続する機構のPDO(PHP Data Object)を試しつつADODBPEAR::DB、ネイティブの関数とどの程度速度に差が出るのか簡単に試してみました。

結果的に当然のことながらネイティブの方がかなり速く、PDOも(PostgreSQLの結果を見る限り)良さそう。

対象となるSQLは10行の適当なデータを入れたDBからのSELECT。なるべく同じ条件下でベンチマークを取ったつもりですが、ADODBが意外と遅かったので正しいのか……?
MySQLは5.0.15でも試しましたが4.1系とほぼ同じ結果。MySQLのPDOがなぜか、「SQLSTATE[HY000] [2002] Can’t connect to local MySQL server through socket ” (111)」というエラーが出て動かず。いろいろ試したのですが原因不明。

環境:
WhiteBoxLinux4、apache2.0.54、PHP5.1.0.RC1

PHPのコンパイルオプション:

./configure --with-zlib --with-pgsql --with-xmlrpc \
 --without-cgi --with-pdo-pgsql \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/src/mysql-4.1.15 --with-pdo-mysql
native function PDO ADODB PEAR::DB
PostgreSQL8.0.3 0.0007 0.004 0.03 0.014
MySQL4.1.15 0.0008 ? 0.024 0.011

pgsql_native.php:

<?php
require_once("Benchmark/Timer.php");
$timer = new Benchmark_Timer(TRUE);
$conn = pg_pconnect("dbname=funaki user=funaki");
if (!$conn) {
    die("cannot connect.");
}
$result = pg_query($conn, "select * from blog");
print_r(pg_fetch_all($result));
?>

pgsql_pdo.php:

<?php
require_once("Benchmark/Timer.php");
$timer = new Benchmark_Timer(TRUE);
try {
    $dbh = new PDO('pgsql:host=localhost;dbname=funaki', "funaki", "");
    $sth = $dbh->prepare("select * from blog");
    $sth->setFetchMode(PDO_FETCH_ASSOC);
    $sth->execute();
    print_r($sth->fetchAll());
} catch (PDOException $e) {
    die($e->getMessage());
}
?>

pgsql_adodb.php:

<?php
require_once("Benchmark/Timer.php");
$timer = new Benchmark_Timer(TRUE);
dl('adodb.so');

require_once('adodb/adodb.inc.php');

$db = ADONewConnection('postgres');

$db->Connect("localhost", "funaki", "", "funaki");
$db->setFetchMode(ADODB_FETCH_ASSOC);
$rs =& $db->Execute('select * from blog');

print_r(adodb_getall($rs));
?>

pgsql_pear.php:

<?php
require_once("Benchmark/Timer.php");
$timer = new Benchmark_Timer(TRUE);
require_once("DB.php");
$db = DB::connect("pgsql://funaki@unix(/tmp)/funaki");
if (PEAR::isError($db)) {
    die($db->getMessage());
}
$sql = "select * from blog";
$db->setFetchMode(DB_FETCHMODE_ASSOC);
print_r($db->getAll($sql));
?>

One response so far

インストールしているFirefoxの拡張機能

Oct 27 2005 Published by funaki under いじる

使っているFirefoxの拡張機能。

No responses yet

はてなブックマークの面白そうな使い方:RSS配信されていないサイトをRSSリーダーでチェックする

Oct 20 2005 Published by funaki under いじる

最近、日々チェックするニュース&ブログの他にSBM、特にはてなブックマークの「過去の人気エントリー」をちらっと眺めるようになりました。記事の読み落としを減らす上で役に立っているようです。

ふと思いついたのが、はてなブックマークをRSSを配信していない毎日新聞とか日経新聞のウェブサイトをRSSリーダーでチェックする方法として使えないかな、と。

例えば「NIKKEI NET」の検索結果。ブックマークされているのは日経の記事ばかりです。誰かがブックマークしているのである程度フィルターがかかって注目記事が多い。何より、RSSで配信されている。これを登録しておけば、ほぼ、日経がRSS配信しているのと同じ効果が得られそうです。

残念ながら検索結果を時系列順にソートできないので現時点では実用性はないのですが、はてなブックマークという人力のフィルターを介すことで、しかもブックマークしている人は無意識のうちに、別の用途で使えるデータを抽出しているのが面白い。

ちなみに時系列順で出して、という要望は出されているようです。

はてなアイデア – 「すべてのブックマークからの検索機能」で、日付順にソートするオプションが欲しいかな。結果の RSS をチェックして新しい URL があったらそれをチェックしたいので。

3 responses so far

AlexaのAPIはよくわからず

Oct 16 2005 Published by funaki under いじる

週末に限ってにっくき雨。

米Amazon.com、Alexaの45億ページ分のデータをWebサービスで正式公開

ちょっと前の記事でAlexaがAPIを公開したのでいじってみました。毎月10000クエリー以上は有料、とあったのでどうやって課金するのかな、と思ったらSign Upと同時にクレジットカードの番号の入力を要求。いやいやながら入力して Access Key IDを手に入れ、ドキュメントを見たのですが。Timestampとあっても書式がわからないし量的にも不満なドキュメント。APIのドキュメントはサンプルが重要だと思う。

普通にAlexaのページを使えばいいんじゃないか、とAPIを有効利用するアイディアも浮かばず。

2 responses so far

IT ConversationsをPodCasting:iPod shuffleで英語を勉強

Oct 13 2005 Published by funaki under 感動する

梅田さんのブログで紹介されていたIT ConversationsのPodCasting。太っ腹なサイトで講演がMP3でダウンロードできる。しかもユーザ登録不要で無料。

早速、iPod shuffleに入れました。入れただけで満足しないことを祈るばかりです。。

2 responses so far

PinClock:思わず衝動買いしたくなる時計

Oct 12 2005 Published by funaki under 感動する

PinClock

このサイトが本家だと思いますがいきなり音が鳴るので注意。


今日夕方、ちらっとテレビを見たらこのPinClockが紹介されていました。一目見て、ぉ、と。すてきなデザインです。
10290円也

No responses yet

vimrc改良中、closetag.vimも入れてみた

Oct 06 2005 Published by funaki under いじる

vimでIDE並の動作だ!と前回感動しましたが、実際使ってみると不必要なときに自動補完されたりTab文字を入力したいのに入力できなかったり、不便なところもありました。

結局、PHPの関数名の自動補完以外の機能は消してしまったのですがこれを機にvimのscriptも少しいじってみました。

手をつけたのがclosetag.vim。HTMLなどのタグを自動補完してくれる代物ですが、Ctrl-_は日本語キーボードでは打てないのでclosetag.vimの141行目を以下のように変更してみました。

inoremap <C-]> <C-R>=GetCloseTag()<CR><ESC>F<i
map <C-]> a<C-]><ESC>

Ctrl-]で補完しつつ、タグに挟まれたところでInsertモードにする、という動作を加えています。

自分のvimrcはもうちょっと落ち着いたらまた公開しようかと。

No responses yet

modulobe.com:仮想生物を簡単に作れる物理シミュレーション・システム

Oct 02 2005 Published by funaki under 感動する

modulobe.com – Modulobe

検索会議のときの様々なデモもすごかったわけですが、その後の飲み会で紹介してもらったこのプロジェクトもすごい。

WindowsXPでは普通に動きました。自分で「フナキ」とあしらった生物を作ってやろうと思ったのですがなかなか難しい。Sampleを動かすのは簡単なのですが。

連想で思い出したのがテレビの「世界まる見え」でやっていた風で動く物体。こちらもすごい。

strandbeest

No responses yet

第三回 検索会議 『Yahoo! HACKS』のデモ公開

Oct 01 2005 Published by funaki under つくる

僕にとっては恒例のアカデメディア、第三回 検索会議 『Yahoo! HACKS』に行ってきました。今回はゲストスピーカー、ということでYahoo!APIを使ったhackのデモとともに5分程しゃべらせていただきました。

うーん、まだあぁいう場のプレゼンで盛り上げるのは下手です。要修行。

以前作ったAjaxで動くタブ式の検索、ytabに加えてGreasemonkeyでYahoo!JAPANのトップページを改ざん!しちゃいました。

yahoojapanhack.user.js

プレゼンする直前にバグを発見しましたがご愛嬌。大切なときに限って不具合が起きるのにはどんな法則が働いているのやら。。

機能は、トップページのトピックスの下にある「一覧」をクリックするとニュースが増えて、検索もできて、検索結果をAuto-DiscoveryなRSSで登録できる、というスクリプトです。


No responses yet