< návrat zpět

MS Excel


Téma: Doplněk s překvapením rss

Zaslal/a 20.11.2015 9:40

Na netu jsem před časem našel půvabný algoritmus ve VBA, který funguje jako univerzální šperhák na hesla jak pro strukturu sešitu, tak pro obsah listů (nikoliv ale pro hesla na projektu VBA). Funkci jsem ověřil a mohu potvrdit její účinnost i rychlost.
Rozhodl jsem se proceduru upravit do podoby doplňku, abych ji měl víc po ruce. Při této příležitosti jsem se pokusil o její další zrychlení vhodnými zásahy do původního algoritmu. Účinek těchto zásahů jsem chtěl vyhodnotil pomocí zabudovaného měření doby trvání.
Výsledek mne nemile zaskočil. Výsledek mých zásahů do algoritmu se projevil jen zcela bezvýznamným zrychlením. Zato použití shodně zaheslovaného sešitu pro srovnávací testy mi poskytlo možnost porovnat rychlost přímého využití algoritmu z paralelně otevřeného sešitu s jeho využitím v podobě doplňku.
Efekt, který se dostavil, jsem nečekal a také jsem se o možnosti podobného účinku nikde nedočetl. Zaheslovaný sešit má tři listy, každý zamčený jiným heslem, a k tomu je tento sešit zamčený jak pro strukturu, tak pro okna dalším nezávislým heslem. Sešit s prolamovacím algoritmem mám ve dvou provedeních: (1) jako xlsm, (2) jako xlam (doplněk). Obsahově jsou obě provedení totožná.
Rychlost práce aktivovaného doplňku (xlsm+xlam): 32,023 sec
Rychlost práce souběžně otevřených sešitů (xlsm+xlsm): 7,676 sec
Jinými slovy totožný algoritmus, spuštěný z doplňku, mi běží čtyři a půlkrát pomaleji, než stejný algoritmus z paralelně otevřeného sešitu. Tomu efektu nerozumím a neumím si ani představit jeho příčinu.

Zaslat odpověď >

icon #028177
eLCHa
Na netu jsem před časem našel půvabný algoritmus ve VBA, který funguje jako univerzální šperhák na hesla jak pro strukturu sešitu, tak pro obsah listů...

... a dále jsem nečetl. Je mi jasné, že jako pokaždé i zde je to pouze pro vlastní potřebu v případě zapomenutého hesla...citovat
#028178
avatar
Vůbec jste nepochopil smysl mého příspěvku: nejde o to, co doplněk dělá, ale že použití algoritmu v doplňku výrazně degraduje jeho rychlost. A implicitní otázka zněla, jestli pro ten efekt má někdo rozumné vysvětlení.
Jinak opravdu nemám potřebu šťourat se v cizích zamčených listech. Jako půvabné mi připadlo to, že tu petlici na králírárně, za kterou hesla pro listy pokládám, lze překonat vlastními prostředky Excelu.citovat
#028286
avatar
Ahoj všem,
Vovka podel se se svím šperhákem .. hodil by se 5citovat
#028287
avatar
O tom to není, ale nezapomněl jste zmínit, že VY to umíte. Filozofujete až moc na můj vkus. A my nemáme křišťálovou kouli, proč to dělá a nedělá. Jsou třeba testy o tom, jak je Excel 2013/2016 v lecčem o polovinu pomalejší než Excel 2010. A kdo ví proč. A poznámka na okraj - pokud ten doplněk či algoritmus zveřejníte, pošlu Vás do prdele... jistě, je přeci volně na internetu (stejně jako porno a přesto nestojím ráno u školy s časákama). Každý pitomec dneska dovede Záznamníkem maker stvořit makro, ale know-how na listu bez maker je umění králů... Jo abych nezapomněl, taky Vám odkryju jakýkoliv zaheslovaný list a projekt VBA, heč.citovat
#028290
avatar
@xlnc: "know-how na listu bez maker je umění králů"

Pěkný a pravdivý obrat.

@Vovka

Osobně vidím přímou úměru mezi dobrým článkem a jeho přínosem pro čtenáře. Tady je jaký? Umíte to lépecitovat
#028292
avatar
Toto je klasická diskuse o vytržené a nepodstatné zmínce v příspěvku. Měl jsem držet hubu o tom, co ten doplněk dělá. Podstatou příspěvku je, že procedura v doplňku počítá čtyři a půl krát pomaleji, než když je spuštěná z paralelně spuštěného sešitu. To by vás, pánové, mělo zaujmout, a ne nějaký blbý šperhák. To zpomalení byla podstata mého příspěvku. A zajímalo mne, jestli už někdo podobný zpomalovací efekt zaregistroval, případně pro něj dokonce zná vysvětlení. Toto není žádné filozofování, toto je zásadní otázka k výkonnosti Excelu.
K obsahu doplňku. Nehodlám tu proceduru zveřejňovat. Našel jsem ji na volně dostupném místě na internetu a necítím k ní žádná práva pro její další šíření. Jednak nejsem autorem algoritmu, druhak cítím jeho nebezpečnost v nepovolaných rukách. Ctím totiž zásadu, že když někdo něco pod heslem zamknul, nepřál si, aby tam druzí chodili. A obráceně: pokud něco, co jsem nezamknul, dám volně na internet, musím počítat s tím, že to jiní použijí. Tohle se snad dá pochopit, dodržovat a respektovat.
Zaujal mne výrok "know-how na listu bez maker je umění králů". Každé know-how je uměním králů. Vždycky se najdou skuteční králové, kteří ho vytvářejí, ale i ti, kteří ho tvořivě používají, a také ti, kteří ho bezostyšně kradou. Jestli se to děje na listu bez maker, není podle mne zas tak podstatné.citovat
icon #028293
eLCHa
@Vovka
Pokud Vás to zajímá - připravte jiný kód, dejte jej do sešitu a do doplňku. Otestujte a pokud se to bude chovat stejně, vložte to sem. Třeba na něco přijdeme. Pokud se budeme bavit teoreticky, určitě nepřijdeme na nic.
Ono to vůbec nemusí souviset s doplněk-nedoplněk. Může to být úplně v něčem jiném s excelem asi nesouvisejícím. Už se mi stalo, že mi kód (prohledávání adresáře) na jednom PC jel v řádu sekund a na druhém v řádu minut. Takže jsem ho musel totálně překopat.
Pokud chcete nějaké závěry, je třeba provést více testů na více strojích a klidně i různých verzích. A když to přeženu, tak možná i různých dnech - ono i u PC záleží někdy na tom, jak se vyspí ;)))

K tomu ostatnímu už jsem se vyjádřil.citovat
#028296
avatar

eLCHa napsal/a:

Pokud Vás to zajímá - připravte jiný kód, dejte jej do sešitu a do doplňku. Otestujte a pokud se to bude chovat stejně, vložte to sem. Třeba na něco přijdeme. Pokud se budeme bavit teoreticky, určitě nepřijdeme na nic.

To je rozumná řeč. Vyplývá z ní to, že jsem narazil na neprobádané téma, ale i vaše ochota věcí se zabývat. Budu jen rád, když se věci dostaneme společně na kloub. Mám řadu aplikací, napsaných jako doplněk. Akce, které z nich volám, probíhají ale v neměřitelně krátkých časech. Budu muset vymyslet něco, co bude trvat měřitelně dlouho, aby bylo co porovnávat.citovat
#028333
avatar
S potěšením odvolávám svou výstrahu před obecnou pomalostí práce doplňků. Ve shodě s doporučením od elCHa jsem vytvořil doplněk s dostačující dobou trvání akce (kvůli měřitelnosti času). U tohoto doplňku mi měření času ukázalo prakticky shodný čas jak pro volání z doplňku, tak pro volání procedury ze souběžně otevřeného sešitu.
Zdá se tedy, že dříve zjištěné zpomalení souvisí s velice nestandardním obsahem algoritmu, jehož dobu jsem měřil před spuštěním tohoto vlákna. Nevím sice, co konkrétního se v něm dělo, ale vypadá to, jako kdyby se ten doplněk na řadu sekund dostal do stavu nečinnosti, což právě vedlo na opravdu významné prodloužení doby zpracování.
V příloze je srovnávací sešit, napsaný jako doplněk. Provádí operaci, které bylo věnované nedávné vlákno, a to vygenerování zamixované oblasti unikátních hodnot. Pro rozumné porovnání časů je vhodné zvolit oblast alespoň milion buněk velikou. Opakované pokusy s milionovou oblastí na mé mašince trvaly (pro oba způsoby použití) mezi 3,1 a 3,5 sec (zřejmě v závislosti na intenzitě procesů na pozadí).
Příloha: zip28333_randvalueblock.zip (27kB, staženo 22x)
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje