Ako optimalizovať výkon programu?

Podstatné je, koľko vzoriek zásobníka obsahuje príkaz, nie celkový počet zobrazení.
Ak môžete spustiť svoj program s jedným vláknom pod debuggerom alebo IDE a ak existuje spôsob, ako zastaviť spustenie programu v ľubovoľnom časovom bode stlačením klávesu alebo kliknutím na tlačidlo v IDE, potom existuje veľmi jednoduchý a efektívny spôsob, ako odstrániť problémy s výkonom.
- 1Spustite program spustený v ladiacom programe. Ak ide o druh programu, ktorý bežne beží veľmi rýchlo, ale chcete, aby bežal rýchlejšie, môžete pridať dočasnú vonkajšiu slučku, povedzme 1000 krát, aby ste mali dostatok času na jeho zastavenie.
- 2Kým je pomalá, ručne ju zastavte. Vykonajte to stlačením klávesu prestávky alebo pauzy, vďaka ktorému sa program zastaví kdekoľvek. Nerobte to nastavením bodu prerušenia v kóde, pretože potom nebudete môcť vidieť, čo robilo, keď ste stlačili kľúč.
- 3Zaznamenajte si zásobník hovorov. Potrebujete zaznamenať súbor a číslo riadku každého príkazu v zásobníku hovorov. Našťastie existuje jednoduchý spôsob, ako skopírovať a prilepiť tieto informácie do textového editora, ale ak nie, urobte to náročne, papierom a ceruzkou.
- 4Reštartujte ho, znova ho zastavte a znova nahrajte. Môžete buď pokračovať v spustení z miesta, kde ste boli, alebo úplne reštartovať program. V každom prípade je to v poriadku. Môžete to urobiť niekoľkokrát, až asi 20.Potrebujete zaznamenať súbor a číslo riadku každého príkazu v zásobníku hovorov.
- 5Pozrite sa na vzorky zásobníka hovorov, či neobsahujú bežné príkazy. Môže byť pre vás užitočné zoskupiť vzorky zásobníka hovorov do členitej stromovej štruktúry, aby ste videli spoločnosť medzi vzorkami. Je dôležité si uvedomiť, že zachytávate príkazy, nie funkcie. Čísla riadkov sú skutočne dôležité.
- 6Skontrolujte vyhlásenia, ktoré sa zobrazujú vo viacerých hromadách hovorov. Toto sú vaši kandidáti na optimalizáciu. Ak napríklad existuje nejaký príkaz v súbore Foo.cpp, riadok 127, ktorý sa stane, že sa objaví na 8 z 20 vzoriek, mali by ste sa na toto vyhlásenie dobre pozrieť a zistiť, či je to, čo robí, skutočne nevyhnutné, pretože keby ste sa toho mohli zbaviť, ušetrili by ste asi 40% času vykonania.
- 7Napraviť problém. A užite si zrýchlenie.
- 8Urob to všetko znova a znova. Kým nenájdete nič iné na optimalizáciu. Je pravdepodobné, že váš program je teraz mnohonásobne rýchlejší, ako bol na začiatku.
- Nebojte sa rekurzie. Vtedy ukážka zásobníka hovorov zobrazuje viac ako jednu inštanciu konkrétneho príkazu. To sa počíta iba ako jeden vzhľad. Podstatné je, koľko vzoriek zásobníka obsahuje príkaz, nie celkový počet zobrazení.
- Dvadsať vzoriek je len okrúhle číslo a je to na vyššej strane. Ak uvidíte podozrivé tvrdenie, ktoré sa objaví na štyroch z prvých piatich vzoriek, je to niečo, čo by ste mohli odstrániť, nepotrebujete žiadne ďalšie vzorky, pretože ste našli veľký.Vykonajte to stlačením klávesu prestávky alebo pauzy, vďaka ktorému sa program zastaví kdekoľvek.
- Keď vám bude podozrenie na konkrétne tvrdenie, možno budete chcieť porozumieť tomu, čo robil. Dobrým spôsobom, ako to urobiť, je odobrať viac vzoriek, kým sa tento príkaz nezobrazí, a potom môžete v tom okamihu skúmať údaje a stav programu, kým úplne nepochopíte, prečo sa toto vyhlásenie vykonáva. Vedieť „prečo“ vám napovie, či je to skutočne nevyhnutné. Často to tak nie je a môžete to obísť.
- Potom, čo to urobíte niekoľkokrát, pravdepodobne poznáte vzor. Vzorec je taký, že programy s hlbokými zásobníkmi hovorov majú spravidla viac príležitostí na zrýchlenie. To vás môže viesť k prijatiu zoštíhleného štýlu programovania s menším počtom vrstiev abstrakcie.
- Odolajte silnému pokušeniu hádať, pretože odhady sú často nesprávne. Hádanie je akékoľvek tvrdenie vo forme „Možno je to X“ alebo „Myslím, že je to X“ alebo „Minule to bolo X - mysleli ste na to?“ alebo „Prestížny odborný autor často hovorí, že je to X“. Nekonajte na základe odhadov, dokonca ani vzdelaných. Mohol by chirurg operovať týmto spôsobom? Mohol by pilot fungovať týmto spôsobom? Ak budete postupovať podľa tohto postupu, nebudete musieť hádať, budete vedieť, čo opraviť, a pravdepodobne to bude niečo, čo by ste nikdy nehádali.
- Buďte pripravení na skepticizmus od kolegov programátorov, ktorí neveria, že je to také ľahké alebo účinné. Ukáž, nehovor.
- Mnoho debuggerov pozastaví iba hlavné vlákno.
- Ladiaci program alebo IDE s klávesom alebo tlačidlom „prestávka“ alebo „pozastaviť“.
Prečítajte si tiež: Ako získať prístup k virtuálnej serverovej konzole pomocou vCloud Director?