Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
#DEFINE - Why?
Message
From
01/04/2008 12:20:28
 
 
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Environment versions
Visual FoxPro:
VFP 9 SP2
Miscellaneous
Thread ID:
01306848
Message ID:
01307395
Views:
6
>>>I wonder how much memory we are talking about though? 100k? We are only talking about values like "LOOK_AT_THIS_COOL_DEFINE" and stuff like that. Maybe it comes down to how memory is assigned and it does save a bunch, but I'm thinking it's not really that much.
>>>
>>Hard to say. Try this test:
>>
>>#define CRLF chr(13)+chr(10)
>>
>>local lcStr
>>
>>for i=1 to 100000
>>  lcStr = CRLF
>>next
>>
>>vs.
>>
>>local lcCRLF, lcStr
>>
>>lcCRLF = chr(13) + chr(10)
>>for i=1 to 100000
>>  lcStr = lcCRLF
>>next
>>
>
>Why would the second example use significantly more memory? You're only creating one variable (albeit 100000 times). More cycles, yes ; more memory? no. Of course a smart compiler would probably only execute the 'lcStr=lcCRLF' once anyway :-}
>
>Regards,
>Viv

Actually the second example uses fewer cycles than the first. Granted we're talking nano-seconds of performance (but then again, we're talking about one variable's worth of memory), but it took the constant 1.2 seconds longer than the variable to execute a loop of 10,000,000 iterations.

Note that this is a specific exception because the constant becomes an expression and not a value. So it makes sense to me since the constant has to execute two function calls (CHR(13) and CHR(10)) plus the concatenation while the variable only has to execute a memory lookup.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform