Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ADOdb zawsze wolniej ???
Forum PHP.pl > Forum > PHP
Bora
mam takie 2 funkcje:

[php:1:19a70f9307]<?php
function pierwsza(){
global $errorString;
$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = true;
$smarty->caching = false;
$zapytanie = "SELECT * FROM tabela";
$wykonaj = mysql_query ($zapytanie);
while($wiersz=mysql_fetch_assoc($wykonaj))
{
$id = $wiersz['id'];
$zapyt = "SELECT * FROMtabela2 WHERE id='$id'";
$wyk = mysql_query ($zapyt);
$ile = 0;
while($wierszy=mysql_fetch_assoc($wyk))
{
$ile = $ile + $wierszy['ile'];
}
$wiersz['ile'] = $ile;
$out[] = $wiersz;
}
$smarty->assign('begin', $out);
$smarty->display('index.tpl');
}
?>[/php:1:19a70f9307]

Oraz taką:

[php:1:19a70f9307]<?php
function druga(){
global $errorString, $db;
$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = true;
$smarty->caching = false;
$zapytanie = "SELECT * FROM tabela";
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$wiersz = $db->Execute($zapytanie);
if ($wiersz === false) die("failed");
while (!$wiersz->EOF)
{
$id = $wiersz->fields['id'];
$zapyt = "SELECT * FROM tabela2 WHERE id='$id'";
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$wierszy = $db->Execute($zapyt);
if ($wierszy === false) die("failed");
$ile = 0;
while(!$wierszy->EOF)
{
$ile = $ile + $wierszy->fields['ile']
$wierszy->MoveNext();
}
$wiersz->fields['ile'] = $ile;
$out[] = $wiersz->fields;
$wiersz->MoveNext();
}
$smarty->assign('begin', $out);
$smarty->display('index.tpl');
}
?>[/php:1:19a70f9307]

Smarty debbuger pokazuje mi czas :
funkcja pierwsza:
Kod
index.tpl (0.00914) (total)

   header.tpl (0.00480)

   footer.tpl (0.00112)

funkcja druga:
Kod
index.tpl (0.02621) (total)

   header.tpl (0.01490)

   footer.tpl (0.00113)


pliki *.tpl wyglądają tak samo w obu przypadkach i tablica $out także.

czy zawsze używanie ADOdb powoduje wolniejszą prace questionmark.gif?
Albo jak to zooptymalizować w ADOdb questionmark.gif
Jabol
a jak byś chciał ? Przecież adodb robi to samo co drugi kod, tylko przerabia to jeszcze samemu. AdoDB jest warstwą pośrednią! Nigdy nie będzie szybzse, bo w gruncie rzeczy to ona tylko przenosi twój kod do swoich klas - ale i tak uważam, że warto ze względu na przenośność.
Bora
czy korzystanie z ob_start i ob_end_flush może przyśpieszyć wykonywanie questionmark.gif
FiDO
Nie sadze, przeciez nic w tym kodzie nie wyswietlasz... (nie liczac Smarty, ale to masz w obu przypadkach)
Przyspieszyc dzialanie AdoDB moze np. jego mechanizm cache'ujacy.
Bora
hmm
czyli jeżeli nie zależy mi na szybkości a nie na integralności z innymi bazami danych to nie ma sensu używać Adodb questionmark.gif
kwiateek
Cytat
hmm
czyli jeżeli nie zależy mi na szybkości a nie na integralności z innymi bazami danych to nie ma sensu używać Adodb questionmark.gif

Według mnie tak właśnie powinno się zrobić choć grzechem nie byłoby stworzenie własnej prostej klasy obsługi bazy danych.

Pozdrawiam.
itsme
wszystko zalezy od tego co jest u Ciebie priorytetem
sam sobie odpowiedziales na to pytanie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.