For nebo While, to je v tomto případě jedno. Potíž je v tom, že měříte velmi krátké úseky. Samotná .NET aplikace potřebuje jen ke startu pár sekund, Excel v době spouštění VBA kódu už máte spuštěný a všechny funkce a knihovny načtené v paměti. Takže to ani není fair srovnání.To je jako srovnávat, jestli je rychlejší auto nebo kolo na 10m úseku. Než člověk stihne vlézt do auta a nastartovat, tak cyklista ujede 50m. Dejte tam 100x víc iterací a uvidíte, co je rychlejší. Interpret neznamená, že to kompiluje po řádcích, on nic do strojového kódu nepřevádí. Prostě rozparsuje řádek, vidí, že se v něm do proměnné přiřazuje nějaký výraz - tak si někde vytvoří proměnnou (typicky v nějaké kolekci), výraz vyhodnotí a hodnotu tam předá. Na dalším řádku vidí volání funkce, tak si tu funkci najde a řádek po řádku ji odsimuluje. V .NETu se každá funkce kompiluje v okamžiku, kdy do ní poprvé vstoupíte, takže ze začátku je aplikace pomalejší (proto ten dlouhý start - vše se načítá do paměti a kompiluje), pak už to jede rychle. A tu .NET variantu spouštějte v Release módu a bez debuggeru (přes Ctrl-F5), to je daleko rychlejší a tak to běží i ve skutečnosti.
|