5 Mayıs 2010, ÇARŞAMBA
::FetchAll vs PDO PDO::bir döngü getirme
Sadece hızlı bir soru.
Orada herhangi bir performans PDO kullanarak arasındaki fark nedir::fetchAll() ve PDO::fetch() döngü (büyük sonuç kümeleri için)?
Eğer herhangi bir fark kullanıcı tanımlı bir sınıf, bir obje haline getiriliyor ediyorum.
İlk eğitimsiz varsayımım fetchAll PDO mysql_query tek yürütme tek bir deyim içinde birden fazla işlem yapabilir, çünkü daha hızlı olabilir. PDO iç işleyişini çok az bilgiye sahibim ancak ve belgeleri, bu konuda bir şey söylemiyor, ya da fetchAll olsun olmasın) sadece PHP-yan döngü bir dizi içine dökülüyor.
Herhangi bir yardım?
CEVAP
5 Mayıs 2010, ÇARŞAMBA
200 k rasgele kayıtları ile küçük bir kıyaslama. Beklendiği gibi, fetchAll yöntemi daha hızlıdır ama daha fazla bellek gerektirir.
Result :
fetchAll : 0.35965991020203s, 100249408b
fetch : 0.39197015762329s, 440b
Referans kodu :
<?php
// First benchmark : speed
$dbh = new PDO('mysql:dbname=testage;dbhost=localhost', 'root', '');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM test_table WHERE 1';
$stmt = $dbh->query($sql);
$data = array();
$start_all = microtime(true);
$data = $stmt->fetchAll();
$end_all = microtime(true);
$stmt = $dbh->query($sql);
$data = array();
$start_one = microtime(true);
while($data = $stmt->fetch()){}
$end_one = microtime(true);
// Second benchmark : memory usage
$stmt = $dbh->query($sql);
$data = array();
$memory_start_all = memory_get_usage();
$data = $stmt->fetchAll();
$memory_end_all = memory_get_usage();
$stmt = $dbh->query($sql);
$data = array();
$memory_end_one = 0;
$memory_start_one = memory_get_usage();
while($data = $stmt->fetch()){
$memory_end_one = max($memory_end_one, memory_get_usage());
}
echo 'Result : <br/>
fetchAll : ' . ($end_all - $start_all) . 's, ' . ($memory_end_all - $memory_start_all) . 'b<br/>
fetch : ' . ($end_one - $start_one) . 's, ' . ($memory_end_one - $memory_start_one) . 'b<br/>';
Bunu Paylaş:
Bir döngü değişmeyen nedir?...
İlişkisel dizi Javascript foreach döng...
Java ile sonsuz döngü...
Neden AddRange daha hızlı foreach döng...
.Döngü daha hızlı çalışır NET,' v...