Ada 95 Quality and Style Guide | Chapter 10 |
10.3.1 Blocksguideline
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 |