It looks like your trying to benchmark preallocation, but you failed at doing that. The array already has at least 101 elements allocated before you attempt to initialize it. The array is not freed from pass to pass. That means you're basically benchmarking the fastest way to do nothing. Obviously, actually doing nothing ("my @working;") will be at least as fast as everything else.

"my @working = undef" doesn't make sense. It assigns one element to the array. Maybe you were thinking of "undef @working" which frees the internal buffer of the array?

It's curious that assign_length and x_with_value preallocate 100 elements then proceed to store 101 elements. Not that it matters, because the array already has at least 101 elements from the previous pass of the loop.

It's curious that your didn't test "$#working = 100;" to preallocate the array. Not that it matters, because the array already has at least 101 elements from the previous pass of the loop.

"my @working = ();" can be written as just "my @working;"


In reply to Re: Emptying (and refilling) an array. by ikegami
in thread Emptying (and refilling) an array. by DStaal

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.