Ada 95 Quality and Style Guide Chapter 10

Chapter 10: Improving Performance - TOC - 10.3 PROGRAM STRUCTURE

10.3.1 Blocks

guideline

  • Use blocks (see Guideline 5.6.9) to introduce late initialization when measured performance indicates.

  • example

       ...
       Initial : Matrix;
    
    begin  -- Find_Solution
    
       Initialize_Solution_Matrix:
          for Row in Initial'Range(1) loop
             for Col in Initial'Range(2) loop
                Initial (Row, Col) := Get_Value (Row, Col);
             end loop;
          end loop Initialize_Solution_Matrix;
    
       Converge_To_The_Solution:
          declare
    
             Solution       : Matrix           := Identity;
             Min_Iterations : constant Natural := ...;
    
          begin  -- Converge_To_The_Solution
             for Iterations in 1 .. Min_Iterations loop
                Converge (Solution, Initial);
             end loop;
    
          end Converge_To_The_Solution;
    
       ...
    end Find_Solution;
    
    

    rationale

    Late initialization allows a compiler more choices in register usage optimization. Depending on the circumstance, this may introduce a significant performance improvement.

    Some compilers incur a performance penalty when declarative blocks are introduced. Careful analysis and timing tests by the programmer may identify those declarative blocks that should be removed.

    notes

    It is difficult to accurately predict through code inspections which declarative blocks improve performance and which degrade performance. However, with these general guidelines and a familiarity with the particular implementation, performance can be improved.


    < Previous Page Search Contents Index Next Page >
    1 2 3 4 5 6 7 8 9 10 11
    TOC TOC TOC TOC TOC TOC TOC TOC TOC TOC TOC
    Appendix References Bibliography