Autor Zpráva
Kwoky
Profil *
Který z těchto kódů bude rychlejší? Oba dělají totéž - počítají orientačně rozdíl data

SELECT DATEDIFF('$today','$datum')


$testden= (date('j',strtotime($datum)));
$testmesic= (date('n',strtotime($datum)));
$testrok= (date('Y',strtotime($datum)));
$vysledek=(($rok-$testrok)*365)+(($mesic-$testmesic)*30)+($den-$testden);


Předpokládám, že MySQL bude rychlejší. Když se v budoucnu setkám s otázkou rychlosti kódu, jak si to můžu sám změřit?
Alphard
Profil
Většinou je snaha snižovat počet dotazů na databázi, ne jí posílat věci, které s ní nesouvisí. Takže to první bude v důsledku asi pomalejší.

Nestačilo by vám v PHP něco jako
$datum = "2009-11-16";
$diff = round((time() - strtotime($datum))/86400);

Nebo PHP: DateTime::diff - Manual.

Doplňuji, v tom vašem kódu odhaduji, že nejpomalejší bude strtotime(), takže bych ho neopakoval, výsledek uložit a pracovat s ním.
Mastodont
Profil
Kwoky:
Jak píše Alphard, posílat do DB dvě proměnné kvůli výpočtu v pohodě zvládnutelnému přímo v PHP je naprostá šílenost.
Kwoky
Profil *
Bylo by možné tu "šílenost" vyjádřit časem? Jestli např. dotaz do DB trvá desetkrát tolik. Jak se to dá objektivně změřit?
DoubleThink
Profil *
Kwoky:
Jestli např. dotaz do DB trvá desetkrát tolik
O pár řádů bych přitlačil. S databází se většinou komunikuje přes síťovou vrstvu, často není ani na stejném stroji. Naopak PHP je už načteno v paměti.

Jak se to dá objektivně změřit?
microtime

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0