Ada: Declaration & assignment overhead
Solution 1:
Based on the Ada language standard, there is no general reason why those two forms of code should have different performance. It would all depend on the target machine and the compiler being used. Depending on the rest of the code in the procedure, some compilers could even completely optimize away the Another_Bar
variable.
However, there is a semantic difference, which could be important if the subtypes of Bar
and Another_Bar
were different -- for example, if Another_Bar
were declared as Positive
instead of Integer
. Namely, in the first form any exception raised by the initialization of Another_Bar
(say, because Bar
has a negative value) is not handled by the possible exception handlers in the procedure itself, but is propagated to the caller. In the second form, where Another_Bar
is assigned after the begin
, exceptions from that assignment can be handled by the procedure's own exception handlers.