## The Order of WHEN Statements

Discussions about the BBC BASIC language, with particular reference to BB4W and BBCSDL
MattC
Posts: 57
Joined: Mon 16 Apr 2018, 06:17

### The Order of WHEN Statements

Hi.

This is more for information rather than a question. (Forgive me if this information is recorded elsewhere, but I couldn't find it.)

I did a simple trial on the order of WHEN statements in a CASE...ENDCASE clause.

Code: Select all

``````      T% = TIME
FOR I% = 1 TO 10000000
A% = 1 : REM set this to 10 for a second run
CASE A% OF
WHEN 1:
WHEN 2:
WHEN 3:
WHEN 4:
WHEN 5:
WHEN 6:
WHEN 7:
WHEN 8:
WHEN 9:
WHEN 10:
ENDCASE
NEXT
U% = TIME
PRINT U%-T%``````
It does absolutely nothing, but it does show that the order of WHEN statements is important when speed is necessary. This conclusion seems obvious when you understand that, unlike a succession of IF...THEN statements, once a WHEN condition is used, the others are completely ignored.

The results (on my computer) are that when A% is set to 1 it takes 1510ms to run (151ns each loop), and when it's set to 10 it takes 4820ms to run (482ns each loop). Calculation suggests that each WHEN line will take an additional 37ns, approx. This may not seem much to the average programmer, but it may well add up if there are a lot of loops and CASE clauses.

Please feel free to add anything to this, or correct me if I'm wrong.

Matt

KenDown
Posts: 141
Joined: Wed 04 Apr 2018, 06:36

### Re: The Order of WHEN Statements

The other aspect of the order of WHEN statements is that you need to order them carefully, otherwise the one you want may never actually be reached because some other condition was fulfilled first.