トップ «前の日記(2006-08-13) 最新 次の日記(2006-08-15)» 編集

いしなお!

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|
2009|03|10|

2006-08-14 [長年日記]

_ [1470.net][URI][RSS] RSS経由で取得したタイトルをURI情報として利用する場合

従来、RSS経由で取得したタイトルなどの情報を、そのままURI情報として利用していましたが、ノイズがあまりにも多いようなので、RSSのURLとアイテムのURLのホスト名が一致する場合のみ、RSS経由の情報をURIなどに利用するように変更しました。

_ [PHP][Zend Framework][Zend_Db_Table] Zend_Db_TableでdescribeTableを使う場合と使わない場合のベンチマーク

Zend_Db_Tableで、毎回describeTableでテーブル情報を取得する場合と、class定義にあらかじめテーブル情報を記述しておいた場合の、速度比較。

サンプルテーブル定義

CREATE TABLE memo (
 id int(11) NOT NULL auto_increment,
 user_id int(11) NOT NULL default '0',
 title varchar(255) NOT NULL default '',
 rgdt datetime NOT NULL default '0000-00-00 00:00:00',
 updt datetime NOT NULL default '0000-00-00 00:00:00',
 PRIMARY KEY  (id),
)

サンプルコード

$db = /* デフォルトDBアダプター */;
Zend_Db_Table::setDefaultAdapter($db);

// 標準のZend_Db_Table
class Memo extends Zend_Db_Table {}

// テーブル情報をあらかじめクラス定義で記述
class Memo2 extends Zend_Db_Table {
   protected $_name = 'memo';
   protected $_cols = array(
       'id' => 'id',
       'user_id' => 'userId',
       'title' => 'title',
       'rgdt' => 'rgdt',
       'updt' => 'updt',
   );
}

// シリアライズしてファイルに保存したテーブル情報を利用
class Memo3 extends Zend_Db_Table {
   public function __construct()
   {
       $serializedColumns = './columns.txt';
       $this->_cols = unserialize(file_get_contents($serializedColumns));
       parent::__construct();
   }
}

$start = microtime(true);
for ($i = 0; $i < 1000; $i ++) {
    $table = new Memo();
}
$end = microtime(true);
echo 'Memo: ' . ($end - $start) . "\n";

$start = microtime(true);
for ($i = 0; $i < 1000; $i ++) {
    $table = new Memo2();
}
$end = microtime(true);
echo 'Memo2: ' . ($end - $start) . "\n";

$start = microtime(true);
for ($i = 0; $i < 1000; $i ++) {
   $table = new Memo3();
}
$end = microtime(true);
echo 'Memo3: ' . ($end - $start) . "\n";

結果(3回分)

Memo: 3.4024510383606
Memo2: 0.2038938999176
Memo3: 0.67136812210083
Memo: 3.6163651943207
Memo2: 0.20920920372009
Memo3: 0.87713384628296
Memo: 3.3675861358643
Memo2: 0.20081806182861
Memo3: 0.63753986358643