www.wikidata.uk-ua.nina.az
Rozmotuvannya ciklu angl loop unrolling loop unwinding sposib v yakij namagayutsya optimizuvati shvidkodiyu programi za rahunok rozmiru dvijkovogo fajlu Zmini v programi mozhe robiti programist abo optimizuvalnij kompilyator Metoyu rozmotuvannya ciklu ye zbilshennya shvidkodiyi programi shlyahom zmenshennya abo viklyuchennya instrukcij kontrolyu za ciklom takih yak arifmetika vkazivnikiv i perevirka na zavershennya ciklu na kozhnij iteraciyi 1 zmenshennya vitrat na galuzhennya a takozh prihovuvannya latentnosti osoblivo zatrimku v chitanni danih z pam yati 2 Cikli mozhut buti perezapisani yak poslidovnosti podibnih nezalezhnih instrukcij i takim chinom mozhut buti usuneni nakladni vitrati obchislennya 3 Zmist 1 Perevagi 2 Nedoliki 3 Statichne Ruchne rozmotuvannya ciklu 3 1 Prostij priklad ruchnogo rozmotuvannya v Si 3 2 Rozmotuvannya WHILE cikliv 4 Primitki 5 DzherelaPerevagi red Vitrati v strogih ciklah chasto mistyat instrukciyi zbilshennya vkazivnika abo perehid na nastupnij element u masivi arifmetika vkazivnikiv a takozh perevirka zavershennya ciklu Yaksho optimizuvalnij kompilyator abo asembler u stani preobchisliti zsuv dlya kozhnoyi individualno vkazanoyi zminnoyi masivu voni mozhut buti vbudovani v mashinnij kod napryamu otzhe ne potribno dodatkovih arifmetichnih dij pid chas vikonannya zauvazhte sho v prikladi podanomu nizhche tak ne vidbuvayetsya Znachnu korist mozhna otrimati yaksho pokrashennya v vikonanni instrukcij z lishkom kompensuye bud yake zmenshennya shvidkodiyi sprichinene zbilshennyam rozmiru programi vitrati na galuzhennya minimizovani yaksho operaciyi v cikli nezalezhni odna vid odnoyi tobto koli operaciya sho zustrichayetsya ranishe v cikli ne vplivaye na nastupni operaciyi operaciyi mozhut potencijno vikonuvatis paralelno mozhe buti realizovane dinamichno yaksho kilkist elementiv masivu nevidoma pid chas kompilyaciyi Optimizuvalni kompilyatori inodi mozhut vikonuvati rozmotuvannya ciklu avtomatichno abo za zapitom Nedoliki red Rozmir programi v rezultati rozmotuvannya zbilshuyetsya sho nebazhano osoblivo dlya vbudovanih zastosunkiv zbilshennya kodu takozh mozhe prizvesti do zbilshennya promahiv keshu sho negativno vplivaye na shvidkodiyu yaksho tilki rozmotuvannya ne vikonuyetsya kompilyatorom kod mozhe stati mensh zrozumilim yaksho kod v tili ciklu mistit vikliki funkcij mozhe buti nemozhlivim poyednati rozmotuvannya z inlajningom bo zbilshennya rozmiru mozhe stati nadmirnim Tozh treba shukati kompromis mizh dvoma optimizaciyami mozhlive zbilshennya vikoristannya registriv v kozhnij iteraciyi dlya zberezhennya timchasovih zminnih sho mozhe zmenshiti shvidkodiyu hocha bagato zalezhit vid mozhlivih optimizacij 4 Statichne Ruchne rozmotuvannya ciklu red Ruchne abo statichne rozmotuvannya ciklu vimagaye vid programista rozboru ciklu i peretvorennya iteracij yak poslidovnist instrukcij yaki zmenshat nakladni vitrati ciklu Dinamichne rozmotuvannya vikonuyetsya kompilyatorom Prostij priklad ruchnogo rozmotuvannya v Si red Pidprograma vidalyaye 100 elementiv z kolekciyi Zvichajnij cikl Pislya rozmotuvannyaint x for x 0 x lt 100 x delete x int x for x 0 x lt 100 x 5 delete x delete x delete x delete x delete x Rozmotuvannya WHILE cikliv red Zvichajnij cikl Pislya rozmotuvannya Rozmotanij cikl iz vivertom WHILE condition DO action ENDWHILE WHILE condition DO action IF NOT condition THEN GOTO break action IF NOT condition THEN GOTO break action ENDWHILE LABEL break IF condition THEN REPEAT action IF NOT condition THEN GOTO break action IF NOT condition THEN GOTO break action WHILE condition LABEL break Rozmotanij shvidshe bo ENDWHILE yakij bude skompilovanij v perehid na pochatok ciklu bude vikonuvatis na 66 mensh chasto Navit krashe priklad iz vivertom yakij mozhe buti vikonanij deyakimi optimizuvalnimi kompilyatorami avtomatichno viklyuchaye vsi bezumovni perehodi Primitki red Ullman Jeffrey D Aho Alfred V 1977 Principles of compiler design Reading Mass Addison Wesley Pub Co s 471 2 ISBN 0 201 10073 8 Petersen W P Arbenz P 2004 Introduction to Parallel Computing Oxford University Press s 10 Nicolau Alexandru 1985 Loop Quantization Unwinding for Fine Grain Parallelism Exploitation Dept of Computer Science Technical Report Ithaca NY Cornell University OCLC 14638257 Sarkar Vivek 2001 Optimized Unrolling of Nested Loops International Journal of Parallel Programming 29 5 545 581 doi 10 1023 A 1012246031671 nedostupne posilannya Dzherela red Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno Otrimano z https uk wikipedia org w index php title Rozmotuvannya ciklu amp oldid 39291742