Re: Looking for the best "JOIN"

new topic     » goto parent     » topic index » view thread      » older message » newer message

I found this too. I got about 285,000 vs 270,000. I suspect that Euphoria
has better garbage collection when using the '&' operator.

----- Original Message -----
From: "Jiri Babor" <jbabor at PARADISE.NET.NZ>
To: "EUforum" <EUforum at topica.com>
Subject: Re: Looking for the best "JOIN"


>
> Derek,
>
> simple concatenation seems to be marginally faster, I got 214,361 :
> 193,488.
> Try it.
>
> jiri
>
>
> global function joinStrings(sequence s)
>     integer l,a,b
>     sequence t
>
>     if length(s) = 0 then
>         return s
>     end if
>
>     l = 0
>     for i = 1 to length(s) do
>         l += length(s[i])
>     end for
>
>     t = repeat(0, l)
>
>     a = 1
>     for i = 1 to length(s) do
>         b = a + length(s[i]) - 1
>         t[a..b] = s[i]
>         a = b + 1
>     end for
>
>     return t
> end function
>
> function join(sequence s)
>     sequence r
>
>     r = {}
>     for i = 1 to length(s) do
>         r &= s[i]
>     end for
>     return r
> end function
>
> -- Test code --
> constant words = {"abc","defghi","jklmnopqr","","st","u","vwxyz"}
> puts(1, join(words) & "\n")
> puts(1, joinStrings(words) & "\n")
>
> atom e
> sequence k
> integer x
>
> x = 0
> e = time() + 10
> while e >= time() do
>     x += 1
>     k =join(words)
> end while
> printf(1, "%d interations in 10 seconds\n", x)
>
> x = 0
> e = time() + 10
> while e >= time() do
>     x += 1
>     k =joinStrings(words)
> end while
> printf(1, "%d interations in 10 seconds\n", x)
>
>
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu