1. warning feature in using "&" operator

Hi everyone!

It was found that there can be huge time consuming in using "&"
operator. Please run the example program below and check the
time for each pattern of using "&".
I don't know why.
Does anyone know on how to optimize speed in using "&"?


-- code start here

sequence a
atom t
integer j,k
j=1 k=2

-- first pattern of using "&"
a={}
t=time()
for i=1 to 10000 do
    a=a&j  a=a&k  -- fast
end for
? time()-t

-- second pattern of using "&"
a={}
t=time()
for i=1 to 10000 do
    a=a&(i&j) -- huge time consumming. beacomes more severe as
              -- the size of "a" increase.
end for
? time()-t

-- code ends here

new topic     » topic index » view message » categorize

2. warning feature in using "&" operator

Lee woo seob writes:
> for i=1 to 10000 do
>    a=a&j  a=a&k  -- fast
> end for

>  a=a&(j&k) -- huge time consuming. becomes more severe as
              -- the size of "a" increases.

You're right.
In v1.5 (and earlier), it can be very slow to have
a loop where you "grow" a very long sequence by
concatenating smaller sequences onto the end of it each
time in a loop. However I recently optimized this case
so now it's very fast in my version. You'll see the
optimization in the next release.

Until then, do it the first way that you showed above.

Concatenating an atom onto a sequence in a loop
(or appending an atom onto a sequence) is
fast, because it has been specifically optimized.

Regards,
  Rob Craig
  Rapid Deployment Software

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu