從下述的範例程式,可以明顯的看出多個重複的程式段,在程式的撰寫上,雖然說複製貼上在程式撰寫時較為方便且簡單,但是重複的程式段卻是燃燒記憶體的主因之一,若是將其簡化即可大幅度的減少記憶體的使用量。


 


以程式範例來做說明 :


 


// 單一變數運算


int main(void)


{ 


   int var1=10; // 初始值


  


   var1 *= 2;      // 變數運算


   var1 += 1;      //


   var1 *= 4;      //


  


   var1 *= 2;      // 重複程式段 1


   var1 += 1;      //


   var1 *= 4;      //


  


   var1 *= 2;      // 重複程式段 2


   var1 += 1;      //


   var1 *= 4;      //


  


   var1 *= 2;      // 重複程式段 3


   var1 += 1;      //


   var1 *= 4;      //


   while(1);


} 


 




從下述程式段可以發現原本重複的程式段,已經副程式化。在撰寫程式時,初學者多以複製貼上進行撰寫,在記憶體的使用上十分浪費。但了解了以下的概念後,ROM的記憶體則可以節省很多,使用次數越多節省越多。


 


改善後的程式段 :


 


int sub_1(int invar) ;       // 宣告副程式


 


// 單一變數進、出副程式


int main(void)


{ 


   int var1=10;             // 初始值


   var1 = sub_1( var1 ) ;    // 代入副程式


   var1 = sub_1( var1 ) ;    // 代入副程式


   var1 = sub_1( var1 ) ;    // 代入副程式


   var1 = sub_1( var1 ) ;    // 代入副程式


   while(1);


} 


 


// 將重複的程式段,以副程式包起。(節省記憶體)


int sub_1(int invar) 


{


   invar *= 2;


   invar += 1;


   invar *= 4;


   return invar;


}


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jk3527101 的頭像
    jk3527101

    簡單也是另一種快樂

    jk3527101 發表在 痞客邦 留言(0) 人氣()