Rychlost vs. čitelnost rubrika: Programování: Jiné

9 joinmax
položil/-a 23.5.2013

Dejme tomu, že máte dvě možnosti, jak napsat podmínku:

1) if (a.isXXX()) { ... }

2) if (a.getYYY() > 0) { ... }

Druhý je o něco málo rychlejší, ale je to v takové části programu, že to nemá na nic reálný dopad. Použili byste první nebo druhou možnost?

odkaz
9 Martin Mystik Jonáš
odpověděl/-a 23.5.2013

"Premature optimization is the root of all evil." -- Donald Knuth

Komentáře

  • Petr Voneš : The 'premature optimization is evil' myth 23.5.2013
  • Martin Mystik Jonáš : Myslím, že uvedený příklad je právě ta předčasná mikro-optimalizace na kterou se to vztahuje. Citace z článku: "Anytime the optimization sacrifices maintainability, it is highly suspect. Indeed, many such optimizations are superficial and may not actually improve the resulting code’s performance." 23.5.2013
  • Petr Voneš : Tady snad ano, chtel jsem jen vyvratit tento mytus. 23.5.2013
  • Martin Mystik Jonáš : Ono tam myslím hlavní otázkou je jak přesně chápat to "premature". Pokud optimalizuju věci, které by šly později změnit jen těžko a jejichž dopad na výkon je jistý tak to nepovažuju za předčasnou optimalizaci. Pokud ale optimalizuju drobnosti o kterých ani nevím jaký budou mít reálný dopad dopad tak je to předčasné. Chyba je podle mě ten citát chápat tak, že se nemá dělat žádná optimalizace dokud to nehoří. 23.5.2013
  • joinmax : Martin Mystik Jonáš: +1 23.5.2013
  • Anonym : Přesně. Psát kód o kterém vím, že je pekelně pomalý, je totální ignorace. Často vídám kód, kde autor v jedné akci controlleru udělá třeba i 5+ volání, která evidentně všecha šahají do DB. Přitom stačí kód refactorovat a sloučit DB dotazy do jednoho. Ještě pořád netušim, jestli je to nedostatekem zkušeností nebo jenom ignorancí. 23.5.2013
  • Petr Voneš : Ne vzdy je jeden komplikovany SQL dotaz nakonec rychlejsi nez vice jednoduchych. Zvlaste kdyz jej neni mozne parametrizovat (typicky promenny pocet polozek v IN podmince ktery si vynucuje pokazde vygenerovat cele SQL znovu, alespon u vetsiny SQL serveru). Samozrejme ve vetsine pripadu to bude spis nesmysl a pouziti jednoho dotazu to zlepsi a casto i zprehledni. 23.5.2013
  • Anonym : Žádné z doporučení není silver bullet ani golden hammer. :) Důležité je nad věcma přemýšlet. 23.5.2013
  • joinmax : rarouš: to není náš případ, tady jsem o několik řádů někde jinde - neřešíme žádné I/O, databáze atd. jen volání jednoduchých metod v rámci jednoho programu. 23.5.2013
  • Anonym : Pojednává o tom i odborný článek a zdá se, že je to skutečný problém. 25.5.2013

Pro zobrazení všech 7 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.