quoting all names, the mystery (was Re: [ANN] News Reader Stack Available)
Alex Rice
alrice at ARCplanning.com
Thu Jul 3 13:23:01 EDT 2003
On Thursday, June 19, 2003, at 12:15 AM, Dar Scott wrote:
>
> On Wednesday, June 18, 2003, at 11:08 PM, Chipp Walters wrote:
>
>> I'm with Jacqueline. I always thought it took the interpreter longer
>> to
>> figure out what it's looking at.
_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."
> A quick test on OS X seems to indicate that is not the case:
>
> on mouseUp
> local x
> set the numberFormat to "0.000000"
> put empty into field "Report"
> put the long seconds into tEnd -- throw this one away
> put the long seconds into tStart
> put the long seconds into tEnd
> put tEnd-tStart into tCorrection
> put the long seconds into tStart
> put the highlight of button "dummy" into x
> put the long seconds into tEnd
> put (tEnd - tStart - tCorrection) & " s quoted" & LF after field
> "Report"
> put the long seconds into tStart
> put the highlight of button dummy into x
> put the long seconds into tEnd
> put (tEnd - tStart - tCorrection) & " s unquoted" & LF after field
> "Report"
> end mouseUp
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?
But I ran my own test and can't discern any noticeable difference.
Sometimes quoted literals is faster, sometimes unquoted literals is
faster. The Hypertalk Book is so clear about this. Maybe we are not
writing correct benchmarks?
on mouseup
set the cursor to clock
set the numberFormat to "0.000000"
put pi into tArr["valOfPI"]
put empty into tStart
put empty into tEnd
--
-- with quoted literal
--
put the long seconds into tStart
repeat for 1000000
get tArr["valOfPI"]
end repeat
put the long seconds into tEnd
put tEnd-tStart into tCorrection1
put "with quoted literal"&& tab & tCorrection1 & \
linefeed after fld "Report"
--
-- without quoted literal
--
put the long seconds into tStart
repeat for 1000000
get tArr[valOfPI]
end repeat
put the long seconds into tEnd
put tEnd-tStart into tCorrection2
put "without quoted literal"&& tab & tCorrection2 & \
linefeed after fld "Report"
--
-- difference
--
put (tCorrection1 / tCorrection2) * 100 & \
"%" & linefeed after fld "Report"
end mouseup
Alex Rice, Software Developer
Architectural Research Consultants, Inc.
http://ARCplanning.com
More information about the use-livecode
mailing list