----- "Juha Manninen (gmail)" <juha.mannine...@gmail.com> 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