I'm pretty sure tie is not very fast. Remember that tie means you have to call a subroutine every time you access a tied value. Even the size test ("$dx<@array") inside your for loop might be more expensive than you think

Tie has its use when you have to jump arround in a document that is to large to fit into memory, but you seem to parse the file sequentially. I assume that at least the file is too big to always fit into memory, otherwise you simply could read it in in one chunk

So better read the file line by line. If you need to do lookaheads (i.e. check $dx+3), use an array as fifo or better drop the lookaheads. You should be able to do that in most cases if you for example parse the file with a state machine.

A state machine is simply a single variable, the state variable. You change this value depending on the lines you see. So a value of 5 could mean 'I just parsed a "record" statement and expect MSC thingies now'. Depending on what you parse, the state variable would then change again or even stay in the same state. And the parser would be a big switch or if-then-else construct. Check wikipedia for more info

UPDATE: Corrected example


In reply to Re: Improving dismal performance - Part 1 by jethro
in thread Improving dismal performance - Part 1 by PoorLuzer

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.