properties vs local variable

Mark Schonewille m.schonewille at economy-x-talk.com
Mon Mar 10 10:10:44 EDT 2014


Hi Terry,

Can you use arrays? They aren't necessarily faster, but in this case 
they might be. Although you have a repeat-for loop, you're still 
updating a counter to keep track of your second data list. Using arrays 
just might speed things up, because the engine won't need to count 
things from the beginning in every loop but can instead read the correct 
elements from both arrays directly. I suspect this solution will either 
be slower or just a little fast, but it could be worth a try.

on displayData tRecNum
    --put milliseconds() into tS
    lock screen
    lock messages
    set the uRecNum of me to tRecNum
    put the uCols of me into tCols
    put the uRows of me into tRows
    set the itemDelimiter to tab
    put 1 into tFldNum
    put 1 into tLineNum
    put line tRecNum to tRecNum + tRows - 1 of the uData of me into tData
    put line tRecNum to tRecNum + tRows - 1 of the uSelected of me into 
tSelectedData
    split tData by cr // numeric keys
    split tSelectedData by cr // same numeric keys
    repeat for each line myKey in the keys of tData // use numeric keys
       if tSelectedData[myKey] then
          put "62,117,215"  into tBackColor
          put "255,255,255"  into tForeColor
       else
          put "0,0,0"  into tForeColor
          if myKey mod 2 = 0 then
             put "244,246,250" into tBackColor
          else
             put "255,255,255" into tBackColor
          end if
       end if
       put 1 into fldNum
       repeat for each item tCellData in item 1 to tCols of tData[myKey]
          put tCellData into fld tFldNum of me
          set the backgroundColor of fld tFldNum of me to tBackColor
          set the foregroundColor of fld tFldNum of me to tForeColor
          add 1 to tFldNum
       end repeat
       // add 1 to tLineNum
    end repeat
    unlock messages
    unlock screen
    --put milliseconds() - ts into cd fld "result"
end displayData

You might want to check that this script actually does what you want. I 
only made a few quick edits..


--
Best regards,

Mark Schonewille

Economy-x-Talk Consulting and Software Engineering
Homepage: http://economy-x-talk.com
Twitter: http://twitter.com/xtalkprogrammer
KvK: 50277553

Use Color Converter to convert CMYK, RGB, RAL, XYZ, H.Lab and other 
colour spaces. http://www.color-converter.com

Buy my new book "Programming LiveCode for the Real Beginner" 
http://qery.us/3fi

LiveCode on Facebook:
https://www.facebook.com/groups/runrev/

On 3/10/2014 13:15, Terence Heaford wrote:
> Mark,
>
> Thanks for your comments.
>
> I am not having a particular problem, just trying to write efficient methods.
>
> I have created my own text table in a group consisting of 6 cols (fields) * 20 rows (fields) to try and speed up the scrolling when using a DG.
>
> This has worked with a scrolling speed increase of approx. 30% when compared to the DG, probably because my table purely uses text and has no need for the remaining code that is in the DG.
>
> The most time consuming element is loading all the fields with the data. Here is the displayData routine.
>
> Can you see any areas that could me modified to speed it up?
>
> on displayData tRecNum
>     --put milliseconds() into tS
>     lock screen
>     lock messages
>     set the uRecNum of me to tRecNum
>     put the uCols of me into tCols
>     put the uRows of me into tRows
>     set the itemDelimiter to tab
>     put 1 into tFldNum
>     put 1 into tLineNum
>     put line tRecNum to tRecNum + tRows - 1 of the uData of me into tData
>     put line tRecNum to tRecNum + tRows - 1 of the uSelected of me into tSelectedData
>     repeat for each line tRecData in tData
>        put item 1 to tCols of tRecData into tFldData
>        if line tLineNum of tSelectedData = true then
>           put "62,117,215"  into tBackColor
>           put "255,255,255"  into tForeColor
>        else
>           put "0,0,0"  into tForeColor
>           if tLineNum mod 2 = 0 then
>              put "244,246,250" into tBackColor
>           else
>              put "255,255,255" into tBackColor
>           end if
>        end if
>        repeat for each item tCellData in tFldData
>           put tCellData into fld tFldNum of me
>           set the backgroundColor of fld tFldNum of me to tBackColor
>           set the foregroundColor of fld tFldNum of me to tForeColor
>           add 1 to tFldNum
>        end repeat
>        add 1 to tLineNum
>     end repeat
>     unlock messages
>     unlock screen
>        --put milliseconds() - ts into cd fld "result"
> end displayData
>
>
>
> All the best
>
> Terry





More information about the use-livecode mailing list