Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Deep recursion problem

by TGI (Parson)
on Oct 23, 2011 at 02:12 UTC ( [id://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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2024-04-19 12:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found