Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Which Should I Use IF/ENDIF or IIF
Message
From
14/06/2002 13:26:29
Guy Pardoe
Pardoe Development Corporation
Peterborough, New Hampshire, United States
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00668532
Message ID:
00668671
Views:
18
Kirk,

I see that others have posted and said that IIF is faster than IF...ENDIF.

I disagree!

I remember testing this in the past and I've always found IF...ENDIF to be faster. I just ran another test using your example and as I expected, I found IF...ENDIF to be faster.

Here's what I did:
#DEFINE MAXLOOPS 1000000
ldStartOn = DATE()
lnStart = SECONDS()
FOR x = 1 TO MAXLOOPS
	ldStartOn = ldStartOn + IIF(VARTYPE(ldStartOn)=[D],1,86400)
ENDFOR
lnEnd = SECONDS()
MESSAGEBOX('IIF: ' + TRANSFORM(lnEnd-lnStart))


lnStart = SECONDS()
FOR x = 1 TO MAXLOOPS
	IF VARTYPE(ldStartOn)=[D]
		ldStartOn=ldStartOn+1
	ELSE
		ldStartOn=ldStartOn+86400
	ENDIF
ENDFOR
lnEnd = SECONDS()
MESSAGEBOX('IF-ENDIF: ' + TRANSFORM(lnEnd-lnStart))
Guy





>I have a fairly large module that contains a search routine that consists of a series of Loops inside loops, inside loops. Within the loops I have serveral places where I do comparisons such as:
>
>
>IF VARTYPE(ldStartOn)=[D]
>    ldStartOn=ldStartOn+1
>ELSE
>    ldStartOn=ldStartOn+86400
>ENDIF
>
>
>I like the code format for readability of the IF/ELSE/ENDIF, but I'm wondering if I'm doing myself a disservice in terms of speed. This code could be replaced with a IIF(). Since this module I'm looking at runs potientially 100+ times before it exits, I thought I might want to find out which way was better in terms of speed.
>
>Thanks for any input.
>
>Kirk
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform