- "Juha Manninen (gmail)" schreef:
> A new Lazarus review :
> http://delphimax.wordpress.com/2010/09/13/freepascal-and-lazarus-success-or-
> failure/
>
> has this comment about Lazarus source:
> ---
> Abundant use of the Exit() command instead of nesting code in
> If/then/else. It
> has been proven (last time in Delphi Informant Magazine) that allowing
> a
> method to nest itself out makes faster code. It is also easier to read
> and
> study. Exit should of course be used (it must be used in many
> situations) but
> prudently.
> ---
>
> Does nesting really create faster code?
not really tested, but think about the following:
1) with nesting:
you validate an expression on being true/false. According to the result, you
jump over a return statement of over a jmp statement to the cleanup block. (if
not optimized by compiler) So, you ALWAYS jump/call.
2) without nesting:
you validate an expression on being true/false. According to the result, you
jump to the clean-up block. Otherwise you continue.
I haven't studied processors that intimately on their branch-prediction beyond
the original Pentium (586), but there it could have 'significant' repercussions
with pipeline-stalling resulting in a few clock-cycles extra for a jump
statement (regardless if it was taken).
>
> For readability I like the nesting style, except when there are very
> many such
> tests in one function.
that is a matter of taste. I find the *overuse* of exit somewhat bad
programming. It is not really clear in a function/procedure all the time during
debugging "why this piece of code is never visited" when you have a few of
those blocks above the said "tested" statement. A remnant of C-style
programmers? Ofcourse there are cases where you need to use it, but in most
cases it is about writing the correct control-statement.
kind regards,
Dimitri Smits
___
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal