Revolution much slower then Hypercard

yves COPPE yvescoppe at
Mon Feb 11 06:44:01 EST 2002

>At 7:59 PM -0800 2/10/02, Geoff Canyon wrote:
>>Finally, pre-loading the data into an array variable instead was 
>>faster still (not counting the time to load the array): 9 ticks.
>At 9:02 PM -0800 2/10/02, Ken Norris (dialup) wrote:
>>Yeow! These are some pretty impressive numbers. The tricks you can do with
>>Rev can be astounding. That last one, though it would take time to set up,
>>looks like some serious industrial grade speed search. How does it work?
>At 8:35 AM +0100 2/11/02, yves COPPE wrote:
>>can you give an example of a script using such a code ?
>Here's the array script. Using the Filter command method might or 
>might not be applicable here -- I'd need to know more of the 
>specifics of the problem.
>By the way, with Revolution it's often fairly easy to create a 
>performance difference of twenty or thirty times, sometimes even a 
>hundred times, just by changing the way you write your code. If a 
>handler is slow, be sure to look for ways to speed it up, because 
>generally there will be a way.
>on mouseUp
>-- first build the arrays. I'm not timing this,
>-- because in real use this would be done once
>-- beforehand, and then the arrays stored in globals.
>-- even so, building the arrays only takes a few seconds
>-- tLog is the results variable -- faster than a field
>   put empty into tLog
>-- setting the default stack for speed
>   set the defaultStack to "revDocsLanguageReference"
>-- figure out how many cards -- there are about 1200
>   put the number of cds into tHowMany
>-- repeat for each card
>   repeat with i = 1 to tHowMany
>-- put three fields into an array element
>     put fld "summary" of cd i && fld "examples" of cd i \
>     && fld "comments" of cd i into tArray[i]
>-- put the name of the card into another.
>-- note that I could have used the card name as the index
>-- for the other array -- Rev has associative arrays, which
>-- are the cat's meow. But if two cards were named the same,
>-- it wouldn't work.
>     put the name of cd i into tCardName[i]
>   end repeat
>-- reset the default stack
>   set the defaultStack to "speedTest"
>-- and now to the test -- start timing!
>   put ticks() into tStart
>   repeat with i = 1 to tHowMany
>-- for each element in the array, if it contains "card"
>     if tArray[i] contains "card" then
>-- then put the entry in the names array after the results variable
>       put tCardName[i] & cr after tLog
>     end if
>   end repeat
>-- put the results in a field and we're done.
>   put tLog into fld "log"
>-- This is about 10 ticks on my machine.
>   put ticks() - tStart into tRunTime
>-- display the results
>   put tRunTime && (the number of lines of tLog)
>end mouseUp

thank you. I begin to understand a little what is using an array.
it's something completely new for me.
I've tested that on one of my stack.
Indeed, it works fast.

With such discussion, with can go furtehr in the work with RR.
I'm impatiently waiting for the 1.1.1b2 release.
Any idea when it comes ?


More information about the Use-livecode mailing list