1. Re: Faster Please .. The End

On 12 Jan 2004, at 23:41, Euman wrote:

> 
> I think this one will be hard to beat, Kat can you with strtok.e?

Well, i figured you could run the tests, since you came up with the new 
code, and you have strtok?

But really, strtok has more functionality that just what you wrote,  since it 
must do more. And i am adding some more... if i don't over-engineer it, of 
course. "Function versatility" vs "can anyone remember the syntax of using 
it". Your "atom x" must be an object in strtok, because it can be passed 
several delimiters, as well as how to behave with those delimiters, much like 
sorttok is passed levels and case-sensitivity params.

Basically, i reduced the importance of speed in strtok (past a certain level), 
in favor of function ability. The best a user of strtok.e can do is keep a copy 
of the parsed string, so calls to gettok(), repltok(), remtok(), etc do not 
haveto reparse the string for each call. Except in cases of multiple 
delimiters, where the string might need to be rebuilt with the (multiple and 
possibly randomly placed) delimiters put back in deparse(), this is the 
greatest speed increase in real life practice. Just about anything else 
remarkable in speed will come from improvements RobC could put in Eu 
itself, in memory management and calling overhead.

Kat
 
> -- Coloborative effort Ron Austin, H.W Overman 2004
> global function sNestDelimited(sequence s, atom x)
> integer len, start, endx
> sequence dseq,dl
>    dseq={}
>    len = length(s)
>    start = 1
>    for i = 1 to len do
>        if s[i] = x then
>           endx = i-1
>           dseq &= {s[start..endx]}
>           start = i+1
>        end if
>    end for
> return dseq
> end function
> 
> ----------- test function ---------
> sequence dl, test, test1
> object data
> integer stop
> atom t
> 
> dl=repeat(127,1)
> test = {}
> test1 = "Ron Austin"&dl&"H.W Overman"&dl&"Euphoria"&dl&"Programmers"&dl
> for i = 1 to 5000 do
> test &= test1 & "Field "&sprintf("%d",i)&dl
> end for
> t = time()
> data=sNestDelimited(test, 127)
> t = time() - t
> puts(1, "Time: " & sprintf("%0.3f", t))
> puts(1,'\n')
> for i=1 to 4 do
> puts(1, data[i]&'\n')
> end for
> stop=getc(0)
> 
> 
> 
> TOPICA - Start your own email discussion group. FREE!
>

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu