in reply to Improving dismal performance - Part 1

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

  • Comment on Re: Improving dismal performance - Part 1

Replies are listed 'Best First'.
Re^2: Improving dismal performance - Part 1
by tilly (Archbishop) on May 12, 2009 at 20:45 UTC
    I would be willing to bet money on this theory.