Autor | Zpráva | ||
---|---|---|---|
arnir Profil |
#1 · Zasláno: 20. 2. 2009, 18:47:47
dobry den
mam rostouci funkci, kdy ze zadaneho cisla potrebuji vypocist jeho vyslednou hodnotu. vytvoril jsem 2 moznosti. vysledky se sice uplne nerovnaji ale oba priklady vyhovuji. chci se tedy zeptat co je rychlejsi? a)v db bude ulozeno pouze jedno cislo a po jeho nahrati se pomoci vzorce podobneho tomuto: ((x*x*x)+348+(23*x))/12 vypocte vysledka hodnota. b)ulozit v db jak toto cislo, tak i posledni hodnotu. v tomto pripade je vzorec pouze: x*7/6*posledni_hodnota_x vim muze se to zdat jako malickost ale potrebuji to v aplikaci nekolikrat a navic pri velkem zatizeni bych chtel zvolit jednodussi variantu dekuji |
||
Werewolf Profil |
#2 · Zasláno: 20. 2. 2009, 18:57:15
arnir
„co je rychlejsi?“ Co je rychlejší nevím... A navíc ikdybys to dělal(a) třeba s deseti čísly, stejně to průměrnému serveru zabere maximálně pět sekund, takže bych byl v klidu... |
||
SwimX Profil |
#3 · Zasláno: 20. 2. 2009, 18:59:22
Werewolf
„Co je rychlejší nevím...“ když nevíš tak neodpovídej „průměrnému serveru zabere maximálně pět sekund, takže bych byl v klidu...“ 5sekund? cože? chceš říct že budu pět sekund čekat na dotaz na db a následné spočítání pár čísílek? navíc arnir to chce „nekolikrat a navic pri velkem zatizeni“ takže jestli to bude trvat 5sekund tak potěš nás pánbůh |
||
arnir Profil |
#4 · Zasláno: 20. 2. 2009, 19:07:22
takze to nemam resit?
jen ze prvni moznost mi prijde jako slozita kalkulace a druha moznost je zase znovu dalsi sloupec do db ale asi druha moznost se mi zda stejne lepsi. ale i tak diky :) |
||
SwimX Profil |
#5 · Zasláno: 20. 2. 2009, 19:16:45
arnir
„takze to nemam resit?“ pokud ta zátež je vážně velká, pak bych to řešil. Zkus si ty skripty proměřit. Zvyšuj si do nějaké proměnné čas a na konci skriptu ho vytiskni.. Pak totéž s tím druhým. |
||
reduxcz Profil * |
#6 · Zasláno: 20. 2. 2009, 21:53:53
5 sekund? Ty jsi asi velky geek :-D...
Ta druha moznost bude o malinko rychlejsi, jestli tahas 1 nebo 2 hodnoty z db na tom moc nesejde to je prakticky to same, spis u toho vypoctu se budou dit rozdily, ale jak rikam naprosto minimalni... Spis se zamer na ruzne cachovani atd nez zrovna na toto... |
||
arnir Profil |
#7 · Zasláno: 21. 2. 2009, 10:49:36
ok diky, no snazim se optimalizovat vsechno
|
||
Joker Profil |
#8 · Zasláno: 21. 2. 2009, 11:16:09
arnir
Podle mého názoru bude obojí docela rychlé, obojí se dá udělat tak, aby to spočítala rovnou databáze a vrátila už výsledek. Každopádně nejlepší metoda, jak zjistit rychlejší, je to prostě vyzkoušet- Databázový dotaz myslím jde v MySQL testovat příkazem BENCHMARK, na PHP jde udělat testovací skript- provést danou věc v cyklu třeba 10000krát (záleží na složitosti toho, co se testuje- aby to netrvalo věky, ale aby to zas nějaký čas zabralo) a vypsat čas, jak dlouho to trvalo. |
||
arnir Profil |
#9 · Zasláno: 22. 2. 2009, 18:43:14
pripadne muzu includovat soubor kde bude switch s 50 case kde bude pro kazde cislo jedna hodnota jiz predem nachystana.
vic hodnot nepotrebuji. to se mi ze zacatku jevilo jako nejhorsi reseni ale kdyz jsem zjistil ze bude potreba max 50 hodnot, tak se mi jevi jako nejlepsi moznost. co Vy na to? |
||
karbon Profil * |
#10 · Zasláno: 22. 2. 2009, 19:36:14
Pokud je hodnot pouze 50, a časová náročnost je vysoká, rozhodně bych neváhal a těchto 50 hodnot bych předpočítal a řešil přesně tak, jak jste popsal.
|
||
arnir Profil |
#11 · Zasláno: 22. 2. 2009, 20:02:04
ano, vim ze switch zrovna neni nejrychlejsi ale urcite to bude rychlejsi nez nacitat z db nebo hodnoty pri kazdem volani prepocitavat.
uz jsem to tak provedl a soubor hodnot ma jen 2kb coz je myslim idealni reseni |
||
Časová prodleva: 17 let
|
0