quoting all names, the mystery (was Re: [ANN] News Reader Stack Available)
Alex Rice
alrice at ARCplanning.com
Thu Jul 3 14:56:01 EDT 2003
On Thursday, July 3, 2003, at 01:17 PM, Dar Scott wrote:
>
> On Thursday, July 3, 2003, at 12:15 PM, Alex Rice wrote:
>
>> _HyperTalk 2.2 The Book_
>>
>> Says on p. 45. "Enclosing literals in quotation marks can result in
>> considerable time savings-- up to 20% for loops with several hundred
>> or thousand repetitions."
>
> I think this means "--up to 20% which can be significant for loops
> with several hundred or thousand repetitions." The loops shouldn't
> affect the percentage.
A loop will amplify the difference which is why I stuck it into a long
loop.
>> In this test you are accessing a UI object. I suspect that access is
>> going to skew things. We know accessing fields is much slower than
>> accessing variables... maybe the same with for buttons?
>
> Uh. I thought the question was related to UI objects.
Maybe, but I think the issue is relating the engine parsing ambiguous
words. Here is the context of that quote
Chapter- Style Memory and Performance
Section- Use Quoted Literals Instead of Unquoted Literals
When HyperTalk comes across an ambiguous word-- one that might be a
literal, function call, variable, or whatever-- it must check all the
possibilities to discover what the word really is. The first
possibility that HyperTalk considers is that the word is a quoted
literal; the last thing it considers is that the word is an unquoted
literal. Enclosing literals in quotation marks can result in
considerable time savings-- up to 20% for loops with several hundred or
thousand repetitions.
> Here is where I see a mystery--
> Suppose I insert this line at the start of the the minimal unquoted
> test:
> if 0 = 1 then put "cow" into dummy
> The report at the end shows that 'get dummy' got empty. If I put that
> at the end, then 'get dummy' got "dummy".
So this line
if 0 = 1 then put "cow" into dummy
although it is never executed, the compiler creates a local variable
named dummy?
> The method used seems to depend on whether a variable was created by
> that line in compiling. If that is the case, why aren't the times the
> same?
I agree that's what it looks like.
> I suspect there might be some decisions that have to wait until
> execution time related to this but don't come into play in this case.
Hmm... this is getting mind bending now :-) I hope Scott or Tuviah will
set us straight.
Alex Rice, Software Developer
Architectural Research Consultants, Inc.
http://ARCplanning.com
More information about the use-livecode
mailing list