Missing split option?

Richard Gaskin ambassador at fourthworld.com
Wed May 18 12:47:45 EDT 2016


Bob Sneidar wrote:

 > On May 18, 2016, at 08:37 , Richard Gaskin wrote:
 >
 >> DGs will give the array directly so I don't need to deal with that
 >> when using those as the Master, but more often I use list fields
 >> for the Master, where it would be convenient to have the array made
 >> in one line.
 >
 > I was thinking of having a hidden data grid for the sole purpose of
 > converting your data to an array. The repeat loop you are looking
 > for may already been written in the datagrid library, which begs the
 > possibility, why not get that function from the datagrid library
 > itself? Might have some methods that will prove useful.

There's a lot of great stuff in the DG code, but this one was easy 
enough to write:

function NamedRowToArray pData
    set the itemdel to tab
    put line 2 of pData into tVals
    put 0 into i
    repeat for each item tKeyName in line 1 of pData
       add 1 to i
       put item i of tVals into tA[tKeyName]
    end repeat
    return tA
end NamedRowToArray

On sample data of 100 fields each with values of > 100 chars (a bit 
larger than most of the data I work with), it returns the array in the 
format I'm looking for in about 1.5 ms, fast enough for UI-related tasks.

Interestingly (though only mildly) I was able to shave off about 1/10th 
of a millisecond by pre-splitting the values rather than using item chunks:

function NamedRowToArray pData
    set the itemdel to tab
    put 0 into i
    put line 2 of pData into tVals
    split tVals by tab
    put line 1 of pData into tKeyNames
    repeat for each item tKeyName in tKeyNames -- line 1 of pData
       add 1 to i
       put tVals[i] into tA[tKeyName]
    end repeat
    return tA
end NamedRowToArray

Even more interesting, that split is only beneficial when dealing with a 
lot of values.  When I reduced the sample set from 100 fields to 10, it 
actually added an extra 1/10th of a millisecond to the time 
(understandable since split requiring chunking anyway, plus a little 
hashing time).

Since the minor difference with pre-splitting the values is negligible 
and data-size dependent, for now I'll stick with the first version since 
to my eye it's more straightforward.

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com





More information about the use-livecode mailing list