Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 15. 4. 2011 05:36:31

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

rychlosti vyhledávacích funkcí

Dobrý den
zde v diskuzi jsem narazil na problematiku rychlosti funkce typo lookup. Používám tyto funkce poměrně hojně. Tuším, že to není zas až tak výhodné, ale mám otázku: existuje někde nějaký přehled, které funkce jsou jak rychlé nebo návod na vytváření větších aplikací z hlediska rychlosti výpočtu?

Má smysl zaobírat se minimalizací těchto vyhledávacích funkcí a jakmile to jen lze nahrazovat je jinými funkcemi - např. index, offset, indirect - které jaksi už odkazují přímo, bude to znatelně rychlejší?
Nebo je např. výhodnější maticové vyhledávání s užitím fcí min, max


LibreOffice 5.4.

Offline

#2 15. 4. 2011 16:11:42

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: rychlosti vyhledávacích funkcí

Moc otázek najednou.

funkce offset a indirect jsou volatilní - přepočítávají se při každém přepočtu. -> zpomalují práci se sešitem, používat, jen když je jich málo nebo víme, proč je chceme použít.
indirect navíc obvykle ztěžuje ladění sešitu.

?lookup a match/index - záleží na úloze. (názory na poměr rychlosti se dost liší, já je považuji z tohoto pohledu za podobné) ?lookup je obvykle srozumitelnější, match/index je trochu obecnější, má jisté výhody při větším počtu vyhledávacích vzorců, když si nalezenou pozici uložíte v pomocné buňce. Lze použít i kombinaci match/index/?lookup, kde si vymezíte ve vzorci pži opakovaném vyhledávání tabulku. (Konstrukce: index(...):index(...) nebo {index(pole; ;sloupec)} - vrací sloupec matice.) 

Pro vyhledávání ve velkých tabulkách se často zapomíná na d-funkce (dget), které jsou na velkých tabulkách a při více podmínkách obvykle rychlejší než lookup/match. Někdy je vhodné je použít s multiple.operations.

Skupina funkcí (sum|count|average|max|min|...)if(s?) ma zatím jen dva zástupce, určitě přibudou další. - Pro svůj účel jsou dost efektivní, pro data v tabulce totéž umí d(sum|count|...).

Matice, případně sumproduct - až, když to nejde lépe - problémy s údržbou, s uživateli, ... Funkce jsou dost obecné a hůře optimalizované, ale jejich alternativou je občas už jen makro.

Rychlost závisí na řadě věcí, mj. na nastavení calcu (měnit způsob výpočtu funkcí přepínači ve vlastnostech byl podle mne dost hloupý nápad), na způsobu programování (nyní diskutovná problémy cykly přes více sešitů jsou pěkným příkladem špatného stylu programování), na verzi OO, na systému, velikosti úlohy, ...

Návody (doporučení) na psaní větších aplikací existují, třeba

www.eusprig.org/smbp.pdf

http://www.ssrb.org/

http://www.eusprig.org/index.htm

http://www.fast-standard.org/the-standard/

Editoval lp. (17. 4. 2011 13:47:58)

Offline

Zápatí