Autor | Zpráva | ||
---|---|---|---|
Kwoky Profil * |
#1 · Zasláno: 11. 11. 2009, 21:01:15
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 |
#2 · Zasláno: 11. 11. 2009, 21:18:13 · Upravil/a: Alphard
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 |
#3 · Zasláno: 11. 11. 2009, 21:20:57
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 * |
#4 · Zasláno: 11. 11. 2009, 23:54:14
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 * |
#5 · Zasláno: 12. 11. 2009, 00:44:39
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 |
||
Časová prodleva: 14 let
|
0