Thank you! Your right, of course, about unloading the array.
(I guess I was just using the index array again because I had it.)
Note that it would actually be:
@all = @a < $sz ? @a : @a[ $tl+1 .. $top, 0 .. $tl ];
since $tl ("tail") is left pointing at the last item written.
About replacing the memory access with a modulo operation:
Maybe. But modulo ain't cheap and at least for small $sz's,
the memory access may not be one (caches). The whole point of
the exercise was to avoid the slowdown from the
shift @a if @a == $sz;
test in the canonical loop. Modulo would seem to be in the same
class. On the Solaris I'm working on at the moment, the indexed
index is much faster than modulo, at least up to arrays of 3000.
In fact, the modulo is only marginally faster than shift/push.
Oddly, the direct retrieval seems to take about as long as retrieving
through the index array(!?!), but it certainly is clearer,
thanks again,
p
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.