Ano jde o počet závislostí, respektive vazeb mezi buňkami. Příkladem může být provázání jednoduchého typu mezi hodnotami v jediném řádku. Tam je dejme tomu v "A" a "B" vstupní hodnota. V řádku je 49 buněk a poslední je výsledek. Pokud se vztahuje provázání "jen jako jediný odkaz na jinou buňku" bude řádek obsahovat 47 jednoduchých vazeb. Pokud ale bude každý závislý odkaz odkazovat na dvě různé buňky, bude řádek obsahovat až "stovku" vazeb.
Nehovořím při tom o možnosti že jsou odkazy rekurzivně zacyklovány a musí využívat iterátor. To znamená, že pokud se váží odkazy z poslední buňky až na první buňku, může být vazba až 2500 jednoduchých vazeb na poslední buňku. K tomu připočítáme posloupnost pro všechny jiné (předchozí buňky).
Potom půjde přibližně o (n=1/2 z 2500)*2500 = cca 3 miliony operací které musí sešit udělat. Tady právě může dojít k různému chování. Při vypnutém přepočítávání se provede jen výpočet editované buňky. Musíme si uvědomit, že pokud se přepočítává pouze editovaný vzorec, nebude se zabývat proměnnými ze kterých čerpá.
Když sešit začne u editované buňky a bude pokračovat směrem k prvním předchůdcům dostane se k větvení které je tím složitější, čím více vazeb je řetězeno. Zde se potom snadno dostaneme i k redundacím na stejných vazbách a počet operací může být mnohem větší (nemluvím o zacyklování iterátorem).
Takže AOO nejspíš využívá uložené hodnory bez kontroly, zatímco LO nejspíš prověřuje všechny kořeny - to se ale můžu jen domnívat. Totiž LO má stajné nabídky, ale navíc má ještě přepočítat ihned. To mi říká, že projde až na poslední předchůdce. Automatický přepočet zřejmě vychází jen na nové hodnoty + uložené a předchůdce nepřepočítá.
Lze předpokoládat například, že v každém novém řádku bude zavedena vstupní hodnta manuálně a coprocesor zde skončí. Další vzorce budou testovat předchozí buňky uložené před novým řádkem. Možná se vzorec spokojí jen s načtením výsledku a možná se zabývá jen chybou pokud nějaká vznikne.
Představou je řetězení buněk asi jako spojení do jediného vzorce který vyhodnocuje postupně proměnné podobně jako když by byly v jediné buńce. Proto je asi důležitější kolik "kilobitů" takto "složený" vzorec obsahuje. Ty miliardy se týkají elementárních kroků. Úlohu zde možná hraje také zabudované OpenCL které by vedlo na rozdělení úloh a proto možná LO bez zapnutého OpenCL ukončí úlohy přepočtu dříve nežli AOO. Nevím jestli by se toto chování změnilo při zahrnutí grafické karty do výpočtu, ale myslím že ano. Bohu žel zatím se tomu nedá věřit zejména k tomu, že ne všechny grafické karty si s tím poradí. Nemí to starší typy a jeden typ nepodporovaných karet (nevím už který byl diskriminován - zřejmě protože nebyl uvolněn ovladač pro takové účely).
Takže podle mne je lepším ukazatelem počet buněk se vzorcem, nežli objem jednotlivých vzorců v byte, nebo v elementárních operacích jádra. U vzorců předpokládáme, že obsahuje vazbu - průměrně jednu, nebo dvě a sice jednoduchého typu. Proto bude správně statistický průměr - ale ne vždy to bude pravda. Já jsem uváděl také jinou hodnotu kterou mám ověřenu - cca desítka tisíc jednoduchých vzorců.
neutr #14 napsal(a)Libre se tak brání zpomalování a případným pádům. AOO tohle neřeší a buď spadne, nebo ne. Kolik je "hodně" těžko odhadnout, ale při řádu desítky tisíc vzorců už pády s úspěchem očekávejte.
PS:
Na základě informace že ve skutečnosti je odkázáno z buňky 55 na buňku 54 (sloupců 49) jsem usoudil, že může být řetězeno až 2500 vzorců do "jediného" výpočtu. Proto jsem počet desítky tisíc upravil na 2500. : první řádek až 47 vazeb, druhý řádek 2x tolik, třetí třikrát tolik....
Editoval neutr (28. 3. 2019 11:19:02)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ