Just in case anyone doesn't realize how different the options are, I wrote this code.
on mouseUp repeat 30000 put any char of "abcdefghijklmnopqrstuvwxyz" && random(100000) && "this is a test string for a fixed-record-length processing test" & cr after X end repeat delete char -1 of X put ticks() into t1 repeat 1 put X into X1 repeat with i = the number of lines of X1 down to 1 if char 1 of line i of X1 is "f" then delete line i of X1 end repeat end repeat put ticks() - t1 into t1 put ticks() into t2 repeat 100 put X into X2 filter X2 without "f*" end repeat put ticks() - t2 into t2 put ticks() into t3 repeat 100 times put empty into X3 repeat for each line L in X if char 1 of L is "f" then next repeat put L & cr after X3 end repeat delete char -1 of X3 end repeat put ticks() - t3 into t3 put X1 into fld 1 put X2 into fld 2 put X3 into fld 3 put t1 && t2 && t3 && (X1 is X2) && (X2 is X3) end mouseUp Note that the filter and repeat for each options each run 100 times, while the repeat with i = the number of lines of X1 down to 1 example runs just once. Here are the results: 3096 99 118 true true So the filter and repeat for each options run in about a sixtieth of a second (remember, they each ran 100 times), while the repeat with i =... option takes almost a minute. The crucial lesson here is avoid expressions like line i of..., but only slightly less important is the fact that repeat for each works about as fast as filter. If you have a complex operation to perform on each line, running multiple filter operations to get it done is likely not as efficient as a simple repeat for each loop. As a simple example, repeat for each is faster here: on mouseUp repeat 30000 put any char of "abcdefghijklmnopqrstuvwxyz" && random(100000) && \ "this is a test string for a fixed-record-length processing test" && \ any char of "abcdefghijklmnopqrstuvwxyz" & cr after X end repeat delete char -1 of X put ticks() into t2 repeat 100 put X into X2 filter X2 without "f*" filter X2 without "*g" end repeat put ticks() - t2 into t2 put ticks() into t3 repeat 100 times put empty into X3 repeat for each line L in X if char 1 of L is "f" or char -1 of L is "g" then next repeat put L & cr after X3 end repeat delete char -1 of X3 end repeat put ticks() - t3 into t3 put X1 into fld 1 put X2 into fld 2 put X3 into fld 3 put t2 && t3 && (X2 is X3) end mouseUp _______________________________________________ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution