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