Nature and speed of numeric constants (was cross-stack globals, also, file inclusion)

Dar Scott dsc at swcp.com
Sat Oct 25 17:04:52 EDT 2003


On Saturday, October 25, 2003, at 11:15 AM, Dar Scott wrote:

> A year ago I ran some tests that did some timing measurements that 
> demonstrate a little about constants.  I don't know if I have it 
> around.  Maybe I can reconstruct that.  The behavior might not be the 
> same today, anyway.

The button script below indicates that an unquoted numeral value for a 
constant is basically the same as a quoted numeral.  The leading 0 
shows up in the value.

As far as speed...  The first use of any constant in arithmetic seems 
to have some overhead and maybe the first use of a particular constant. 
  After that, the speed is about the same.  I'm not completely happy 
with this test; I think there must be more revealing tests.

The second use is not as fast as a value forced to internal numeric 
form.  I thought I had seen that it was for 1.1.1, but now think I was 
mistaken.

The script below gave me these results (typically):

Time is in microseconds.
script const unquoted-- first: 8.9 second: 2.5
script const quoted--   first: 3.0 second: 2.1
varible with 0 added--  first: 1.0 second: 1.5
First char of b: 0

Dar Scott




*********************
constant a = "0111.000000000000000000000000000000000000000000000000000"
constant b =  0222.000000000000000000000000000000000000000000000000000
local c

-- This timing needs OS X quality timing.
on mouseUp
   local x, y, d, timeEnd, timeStart, timeFix
   set numberFormat to ".0"
   put "Time is in microseconds." & LF into report
   wait .2 seconds
   put 0+333 into c -- set up variable as "constant"
   put 0+444 into d
   put the long seconds into timeEnd -- dummy
   put the long seconds into timeStart
   put the long seconds into timeEnd
   put timeEnd-timeStart into timeFix

   put the long seconds into timeStart
   put d+b into x
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*1000000 into timeFirst
   put the long seconds into timeStart
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put d+b into y
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*100000 into timeSecond
   put "script const unquoted--" & tab & "first: " & timeFirst after 
report
   put " second: " & timeSecond & LF after report


   put the long seconds into timeStart
   put d+a into x
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*1000000 into timeFirst
   put the long seconds into timeStart
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put d+a into y
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*100000 into timeSecond
   put "script const quoted--   " & tab & "first: " & timeFirst after 
report
   put " second: " & timeSecond & LF after report

   put the long seconds into timeStart
   put d+c into x
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*1000000 into timeFirst
   put the long seconds into timeStart
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put d+c into y
   put the long seconds into timeEnd
   put (timeEnd-timeStart-timeFix)*100000 into timeSecond
   put "varible with 0 added-- " & tab & "first: " & timeFirst after 
report
   put " second: " & timeSecond & LF after report

   put "First char of b:" && char 1 of b & LF after report

   put report
end mouseUp
************************************



More information about the use-livecode mailing list