Skip to content Skip to sidebar Skip to footer

Performance When Passing Huge List As Argument In Recursive Function?

I am using Python and I have a recursive function that takes a huge list as one of the arguments: # Current implementation def MyFunction(arg1, arg2, my_huge_list) ... ...

Solution 1:

The list will be passed by reference, so it doesn't take any longer to transfer a 1-item list vs. a 100000 item list:

def null(x): return x
longlist =range(100000)
shortlist =range(1)
longerlist =range(1000000)

%timeit null(shortlist)
10000000 loops, best of3: 124 ns per loop

%timeit null(longlist)
10000000 loops, best of3: 137 ns per loop

%timeit null(longerlist)
10000000 loops, best of3: 125 ns per loop

The longer lists have 100k and 1M entries in them, and yet don't take significantly long to pass as arguments than shorter lists.

there may be other ways to improve performance; this probably isn't one of them.

Solution 2:

No, arguments in Python are passed by reference. More precisely - variables in Python is just a pointers that stores memory-addresses of actual data. So when Pythons variable-pointer passed to a function - it passed by its value - address pointing to actual data, it means that, variables passed to functions by value and value of variables are references to objects. More on that topic:

Post a Comment for "Performance When Passing Huge List As Argument In Recursive Function?"