Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Deep recursion problem

by TGI (Vicar)
on Oct 23, 2011 at 02:12 UTC ( #933120=note: print w/ replies, xml ) Need Help??


in reply to Deep recursion problem

If you want to do this kind of recursion, avoiding all the copying will make things faster.

Note that I am too lazy to even try a comparison using Benchmark to prove what I say. So I could be deluding myself here.

This code should be a fair bit faster than yours:

sub size_of_an_array { return 0 unless @_; pop; return 1 + &size_of_an_array; }

The reason for the putative speed boost is that it avoids making any copies of the array under consideration.

Check out perlsub for the meaning of &sub_name;.

If you care to benchmark, you might find that shift works even faster than pop. It is a very frequent operation on @_, so I wouldn't be surprised if there are clever optimizations there.

You also might find that I'm full of it. Surprising things can happen. That's why you should always benchmark and profile code when you try to optimize it. That way you can be sure you are making effective optimizations on the right parts of the code.


TGI says moo


Comment on Re: Deep recursion problem
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://933120]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2014-08-22 22:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (168 votes), past polls