Performance Mystery Solved - IT'S THE DATA STUPID!!

Monte Goulding monte at sweattechnologies.com
Thu Nov 11 21:49:52 EST 2010


> There's probably some nuance I'm missing - here's a quick test which first uses the fileName of a stack to access a property, then the next run it opens the stack and gets the property by referring to the stack's short name (FWIW, I had saved the stack previously with its destroyStack set to true to try to maximize any load difference):
> 
> 
> on mouseUp
>  put 10000 into n
>  put fld "file" into tStackFile
>  --
>  put the millisecs into t
>  repeat n
>    put the uTest of stack tStackFile into r1
>  end repeat
>  put the millisecs - t into t1
>  --
>  put the millisecs into t
>  toplevel tStackFile
>  put the short name of stack tStackFile into tStack
>  repeat n
>    put the uTest of stack tStack into r2
>  end repeat
>  close stack tStackFile
>  put the millisecs - t into t2
>  --
>  put t1 && t2 &&(r1=r2) into fld "r"
> end mouseUp
> 
> Result:  151 140 true
> 
> The difference is small even across 10,000 iterations, and can be explained by the need to resolve the path to a stack reference.
> 
> How can this test be modified to show a greater difference?

Good question. It was iterating over the controls in a stack so I'm not sure if that would make any difference. I believe the user had something like 20000 graphics on a card. I can't remember if the destroyStack was true or not. 

I ran a quick test with a stack with 500 graphics and a slightly different script:
on mouseUp
    put fld "file" into tStackFile
    --
   delete stack tStackFile
    put the millisecs into t
    repeat with X=1 to the number of grcs of stack tStackFile
         put the uTest of grc X of stack tStackFile into r1
    end repeat
    put the millisecs - t into t1
    --
    delete stack tStackFile
   put the millisecs into t
    toplevel tStackFile
    put the short name of stack tStackFile into tStack
    repeat with X=1 to the number of grcs of stack tStack
         put the uTest of grc X of stack tStack into r2
    end repeat
    close stack tStackFile
    put the millisecs - t into t2
    --
    put t1 && t2 &&(r1=r2) into fld "r"
end mouseUp

Result: 1034 212 true

There was no significant difference with destroyStack property true or false. Adding another 500 graphics to the card resulted in this:
8863 399 true

Changing toplevel to go invisible stack resulted in this:
8596 72 true

Cheers

Monte


More information about the Use-livecode mailing list