[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Nested Switch() statements



PureBytes Links

Trading Reference Links

Steve,

No, I don't think it is worthwhile for speed reasons.
In AFL speed of execution of switch statement vs if-else is almost identical. 
The only reason for using switch is that the code may look
"cleaner".

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Steve Dugas" <sjdugas@xxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, May 25, 2007 5:26 PM
Subject: Re: [amibroker] Re: Nested Switch() statements


> Hi Tomasz - Do you thnk it is worthwhile ( maybe speed increase, for 
> example? ) to convert existing if-else if-else if...  over to Switch() ? 
> Thank you!
> 
> Steve
> 
> ----- Original Message ----- 
> From: "Tomasz Janeczko" <groups@xxxxxxxxxxxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Friday, May 25, 2007 7:32 AM
> Subject: Re: [amibroker] Re: Nested Switch() statements
> 
> 
>> Hello,
>>
>> Frankly speaking fall-through is one of BEST features of switch() 
>> statement.
>> I use it thousands of times. Implementations lacking that are missing
>> single most important thing in switch() statement.
>>
>> K&R "The C Programming Language" book is really recommended reading.
>>
>> Best regards,
>> Tomasz Janeczko
>> amibroker.com
>> ----- Original Message ----- 
>> From: "Nigel Rowe" <rho@xxxxxxxxxxxxxxx>
>> To: <amibroker@xxxxxxxxxxxxxxx>
>> Sent: Friday, May 25, 2007 12:12 PM
>> Subject: Re: [amibroker] Re: Nested Switch() statements
>>
>>
>>> On Fri, 25 May 2007, Ton Sieverding wrote:
>>>> Can you please explain me why 'switch statements are a frequent
>>>> source of bugs' ? If the last CASE is a DEFAULT then all possible
>>>> cases are covered. Or am I missing something in the AFL SWITCH
>>>> statement ?
>>>>
>>>> switch ( expression )
>>>> {
>>>>     case constant-expression1 : statement;
>>>>     case constant-expression2 : statement;
>>>>     ...
>>>>     case constant-expressionN : statement;
>>>>
>>>>     default : statement;
>>>>
>>>> }
>>>>
>>>>
>>>> Ton.
>>>
>>> The 'standard' error when using a switch statement in 'C' and presumably
>>> AFL, is forgetting to put 'break;' statements in.
>>>
>>> To paraphrase your example (above) so it looks like this:-
>>>
>>> switch ( expression )
>>> {
>>>    case constant-expression1 : statement1;
>>>    case constant-expression2 : statement2;
>>>    ...
>>>    case constant-expressionN : statementN;
>>>    default : statement_default;
>>> }
>>>
>>> If you leave out the break statements, and
>>> expression==constant_expression1 you will execute statement1 (what you
>>> wanted) AND ALSO statement2 AND ALSO statement3 AND ALSO ... statementN
>>> AND ALSO statement_default.
>>>
>>> It's sometimes called the 'fall-through' bug.  It's easy to miss, can be
>>> a right pain!
>>>
>>>
>>> -- 
>>> Nigel Rowe
>>> rho \N{COMMERCIAL AT} swiftdsl \N{FULL STOP} com \N{FULL STOP} au
>>>
>>>
>>>
>>> Please note that this group is for discussion between users only.
>>>
>>> To get support from AmiBroker please send an e-mail directly to
>>> SUPPORT {at} amibroker.com
>>>
>>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>>> http://www.amibroker.com/devlog/
>>>
>>> For other support material please check also:
>>> http://www.amibroker.com/support.html
>>>
>>> Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>
>>
>> Please note that this group is for discussion between users only.
>>
>> To get support from AmiBroker please send an e-mail directly to
>> SUPPORT {at} amibroker.com
>>
>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> http://www.amibroker.com/devlog/
>>
>> For other support material please check also:
>> http://www.amibroker.com/support.html
>>
>> Yahoo! Groups Links
>>
>>
>>
>> 
> 
> 
> 
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> 
> Yahoo! Groups Links
> 
> 
> 
> 
>


Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/