Re: Faster please....
- Posted by "Euman" <euman at bellsouth.net> Jan 12, 2004
- 406 views
From: "C. K. Lester" <euphoric at cklester.com> > Euman wrote: > > > snip > Please strip the "3D" extraneous characters, Euman. > Sorry, Hope this one gets to you without the 3D's... <snip> global function sDelimited1(sequence s1, sequence s2) integer len, start, endx sequence dseq,dl -- didn't define dl dseq=3D{} -- didn't initialize this len =3D length(s2) start =3D 1 for i =3D 1 to len do if equal(s2[i..i],s1) then endx =3D i - 1 dseq &=3D {s2[start..endx]} start =3D i + 1 end if end for return dseq end function function sNest(sequence s1, sequence s2) integer start, endx sequence dseq dseq =3D {} start =3D 1 for i =3D 1 to length(s1) do endx =3D s1[i] dseq &=3D {s2[start..endx-1]} start =3D endx + 1 end for return dseq end function function sDelimited( sequence s1, sequence s2 ) -- returns: sequence containing indices of all matches -- if unsuccessful return empty sequence {} object found found =3D match( s1, s2 ) if found then found &=3D found + sDelimited( s1, s2[found+1..length(s2)] ) else return {} end if return found end function ----------- test function --------- sequence dl, test object data integer stop atom t dl=3Drepeat(127,1) t =3D time() for i =3D 1 to 10000 do test =3D "Euman"&dl&"Euphoria"&dl&"Programmer"&dl&"this is a test"&dl -- comment / uncomment --data=3DsNest(sDelimited("=7F", test), test) data=3DsDelimited1("=7F", test) end for t =3D time() - t puts(1, sprintf("%2.3f", t)&'\n') for i=3D1 to 4 do puts(1, data[i]&'\n') end for stop=3Dgetc(0) </snip> Euman