php benchmark
RDBMS、NewSQL、および NoSQL を比較するために、a を作成しようとしています。このスクリプトは、クエリを実行して実行時間を測定するだけです。
mysql のような場合は、次を使用します。
$start = microtime(true);
$result = mysql_query($SQL);
$end = microtime(true);
ベンチマーク用のデータをフェッチしませんでした。
しかし、mongodb-php では、関数find()
はcursor
$start = microtime(true);
$collection = $this->_db->selectCollection($collection);
$cursor = $collection->find($query);
$end = microtime(true);
$cursor
と$result
は同等ですか (時間/データコスト) ? カーソルはデータをロードしません。データをロードするためにカーソルを反復する必要があります..そのため、MySQL と mongoDB の間でクエリを実行する時間が非常に異なるか、単に mongoDB がロックするだけです...
コードを次のように変更する方が公平かどうか疑問に思っています。
$start = microtime(true);
$result = mysql_query($SQL);
while ($row = mysql_fetch_row($result)) {}
$end = microtime(true);
と
$start = microtime(true);
$cursor = $collection->find($query);
foreach ($cursor as $doc) {}
$end = microtime(true);
最後に、mongodb カーソル データを反復処理するたびに、コンピューターのメモリからではなく、mongodb サーバーから直接フェッチされるというのは本当ですか?