If you are scanning an array repeatedly, that is usually a sign that you wanted a hash first. So take your arrays and turn them into hashes of arrays in one step.
foreach @ECL_STAT { if (/^(\w+)/) { # The net id is $1... push @{$ECL_LOOKUP{$1}}, $_; } } # Time passes foreach my $key (@totalkeys) { $NETID = $totalnetname{$key}; @ECL_DATA = @{$ECL_LOOKUP{$NETID}}; # etc }
So you see you scan @ECL_STAT just once to break it up into a hash of arrays, and then you find those arrays when you want them by a hash lookup.

This should be substantially faster.

BTW random note. I didn't change your names, but your variable names are very similar. And your loop variable was not lexical, which suggests to me that you are not using strict. Try using strict and see if that doesn't catch a few bugs...


In reply to Re (tilly) 1: Grep Effeciency by tilly
in thread Grep Effeciency by ImpalaSS

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.