Testing semantics aside, I definitely agree with your conclusions. Repeat for each performs awfully well for text operations if you can encapsulate your logic in a single pass.
One additional method to consider... have you tried using split / combine to turn the data into an array, something like (pseudo-code): split myData ... delete myData[5] delete myData[9] ... combine myData I have a feeling the overhead of doing both a split and combine will still lose most times versus "repeat for each", but haven't tried it myself. > Mark and Brian, > > Thanks for your comments. > > Mark you are absolutely right about tests 9, 10 and 11 - it's the problem of > taking my real life situation and simplifying for the List. I've revised the > script and this time TESTED the output to confirm the last 3 create > identical data. > > No change, it's still quicker to take a HUGE set of data and recreate a > slightly smaller version of it, than it is to just delete a small amount > from it - although it only applies if you can use 'repeat for each' to > create your new data. > > Brian, whilst put line 1 to -2 might be OK if all you want to do is delete > the last line, and I accept I used it in my 'simple' examples, the last > three Tests are more real life, where the line to delete is imbedded > 'somewhere' in the data. Interestingly though you again prove the point that > 'putting data' in Rev is much faster than 'delete' data. > > REVISED test results I got on a MBP 2.16GHz, 2 GB RAM, OS X.6.2, Rev Studio > 4.0.0 Build 950 > > **repeat for each** > put after = 2 ms > delete line -1 = 327 ms > put before = 10 ms > delete line 1 = 9 ms > **repeat with x = ** > put after = 158 ms > delete line -1 = 322 ms > put before = 196 ms > delete line 1 = 10 ms > Create 90% - repeat for each = 2 ms > Create 90% - repeat with x = 288 ms > Delete 10% = 199 ms > > 50000 repeats > **repeat for each** > put after = 19 ms > delete line -1 = 35491 ms > put before = 951 ms > delete line 1 = 934 ms > **repeat with x = ** > put after = 18528 ms > delete line -1 = 35208 ms > put before = 18872 ms > delete line 1 = 929 ms > Create 90% - repeat for each = 26 ms > Create 90% - repeat with x = 33341 ms > Delete 10% = 19790 ms > > The REVISION 3 script I used: > > on mouseUp > repeat 50000 times > put random (9) & cr after tData > end repeat > --test 1 > put the millisec into tStart > repeat for each line tLine in tData > put tLine & cr after tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal1 > --test 2 > put the millisec into tStart > repeat for each line tLine in tData > delete line -1 of tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal2 > --test 3 > put the millisec into tStart > repeat for each line tLine in tData > put tLine & cr before tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal3 > --test 4 > put the millisec into tStart > repeat for each line tLine in tData > delete line 1 of tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal4 > --test 5 > put the millisec into tStart > repeat with tCounter = 1 to the number of lines of tData > put line tCounter of tData & cr after tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal5 > --test 6 ***REVISED*** > put the millisec into tStart > repeat with tCounter = 1 to the number of lines of tData > delete line -1 of tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal6 > --test 7 > put the millisec into tStart > repeat with tCounter = 1 to the number of lines of tData > put line tCounter of tData & cr before tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal7 > --test 8 > put the millisec into tStart > repeat with tCounter = 1 to the number of lines of tData > delete line 1 of tData1 > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal8 > --test 9 ***REVISED*** > put the millisec into tStart > repeat for each line tLine in tData > if NOT(tLIne contains 1) then > put tLine & cr after tData1 > end if > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal9 > --test 10 ***REVISED*** > put the millisec into tStart > repeat with tCounter = 1 to the number of lines of tData > if NOT(line tCounter of tData contains 1) then > put line tCounter of tData & cr after tData2 > end if > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal10 > --test 11 ***REVISED*** > put tData into tData3 > put the millisec into tStart > repeat with tCounter = the number of lines of tData down to 1 > if (line tCounter of tData contains 1) then > delete line tCounter of tData3 > end if > end repeat > put the millisec into tEnd > put tEnd - tStart into tTotal11 > > put "**repeat for each**" & cr into msg > put "put after = " & tTotal1 & " ms" & cr after msg > put "delete line -1 = " & tTotal2 & " ms" & cr after msg > put "put before = " & tTotal3 & " ms" & cr after msg > put "delete line 1 = " & tTotal4 & " ms" & cr after msg > put "**repeat with x = **" & cr after msg > put "put after = " & tTotal5 & " ms" & cr after msg > put "delete line -1 = " & tTotal6 & " ms" & cr after msg > put "put before = " & tTotal7 & " ms" & cr after msg > put "delete line 1 = " & tTotal8 & " ms" & cr after msg > put "Create 90% - repeat for each = " & tTotal9 & " ms" & cr after msg > put "Create 90% - repeat with x = " & tTotal10 & " ms" & cr after msg > put "Delete 10% = " & tTotal11 & " ms" & cr after msg > end mouseUp _______________________________________________ use-revolution mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
