http://www.perlmonks.org?node_id=810406


in reply to Re^2: Speeding up named capture buffer access
in thread Speeding up named capture buffer access

I don't see anything wrong with:

%tmp = %+;

Did you try/get the number of calls of this?

BTW, I first thought about the following as in update/append mode for hashes:

@tmp{ keys %+ } = values %+;

but I could predict that the number of calls should increase.

Replies are listed 'Best First'.
Re^4: Speeding up named capture buffer access
by SBECK (Chaplain) on Dec 01, 2009 at 16:33 UTC

    There's not anything 'wrong' with it (i.e. it works), but now, in addition to 3 calls to FETCH for every key, there are also calls to FIRSTKEY and NEXTKEY, so the number of calls increases, and it's marginally slower.

    Basically, if there are 3 named buffers (and in the real-life module, there's usually a lot more than that), there have to be 3 calls to FETCH, but by doing the work at the level of my module, it is constantly doing a FETCH and returning to my module, then calling FETCH again, over and over.

    I want to have a Tie::Hash method which will return the entire hash. Then there will be only a single call to a Tie::Hash::NamedCapture routine (which will then call all of the FETCH'es internally, but since this is all c code, it should be a lot faster).

    Unfortunately, I'm fairly certain it doesn't exist at this point, so I'm just experimenting with ways to speed up what I've got.