Լիովին քեզ հասկանում եմ: Բայց կոմպիլյատորի օպտիմիզացիան կապ չունի ստեղ, քանի որ վերածվում է ASSEMBLER-ի, որի պարագայում էլ ցանկացած գործողոթւոյւն բիտային է, այդ թվում և բազմապատկումը: Ստանդարտ երկուական բազմապատկումը գումար-տեղաշարջ հաջորդականությամբ է կատարվում` բիտերի մակարդակով: Այո, ճիշտ ես պիտի որ ցուցիչի հետ կատարվող օպերացիաները շատ մեծ ժամանակ չխլեն, բայց այդ օպերացիաները խիստ կախված են կողմնակի հանգամանքներից: Հիշողությունում տեղի պիտի հատկացվի ցուցիչին: Ըստ ծրագրի դու դա անում ես ամեն անգամ դրան հայտարարելով ցիլկի առաջին մակարդակում: Նախ այդ հիշողուոյւնը պիտի լինի, որ տրամադրվի, երկրորդն էլ կախված է, ինչպես նշեցիր պրողեցորի կառուցվածքից` ինչպես է կառավարվում հիշողության հասցեների տիրույթը:
Բացի այդ, շատ ճիշտ էիր նկատել, պրոցեսորի քեշը մեծ նշանակություն ունի:Եթե ամբողջ զանգվածը և ցուցչներն էլ հետը տեղավորվում են պրոցեսորի քեշում, ապա գործողությունները մի քանի անգամ ավելի արագ կկատարվեն:
Բայց արի հաշվենք` m-ը 10000x10000 հատ int է` այսինքն` 100մլն հատ int, 4 բիտով կանի 400մլն բիտ` մոտ 48ՄԲ, իսկ այդպիսի քեշ չունեն ներկայիս պրոցեսորները: Սա կոպիտ հաշվարկ էր, հաշվի պետք առնել նաև այն, որ ներկայիս պրոցեսորում հասցեավորումը 64բիտով է գնում, նույնիսկ 32 բիտանոց OՀ դեպքում: Այստեղ չմ հաշվում ծրագրի մնացած փոփոխություններն ու գործողությունների հրամաննեը (դե սրանք տուֆտա փոքր թվեր են, դրա համար):
Ուստի այսպես, թե այնպես խնդիր լուծման ընթացքում օգտագործվելու է համակարգային հիշողությունը` RAM-ը: Ու կախված պրոցեսորի վրա ընթացող այլ պրոցեսներից, հիշողության փեյջինգի մեխանիզմից, հիշողության կառուցվածքից և լիքը այլ բաներից էդ խնդրի լուծումը կարող է տարբեր ժամանակներ խլել: Սակայն 10000 անգամ ցուցիչի հայտարարումն ու արժեքի գրանցումը արդեն իսկ պիտի իր ազդեցությունը տա:
Քո մոտ ինչքան ա դանդաղում? Մոտավորապես ինչքան ա հարաբերակցությունը ցուցիչով ու առանց դրա? Խրոնոմետրաժ արել ես?
Էջանիշներ