KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Does using Higher Order Functions & Lambdas make running time & memory efficiency better or worse? For example, to multiply all numbers in a list : nums = [1,2,3,4,5] prod = 1 for n in nums: prod*=n vs prod2 = reduce(lambda x,y:x*y , nums) Does the HOF version have any advantage over the loop version other than it's lesser lines of code/uses a functional approach? EDIT: I am not able to add this as an answer as I don't have the required reputation. I tied to profile the loop & HOF approach using timeit as suggested by @DSM def test1(): s= """ nums = [a for a in range(1,1001)] prod = 1 for n in nums: prod*=n """ t = timeit.Timer(stmt=s) return t.repeat(repeat=10,number=100) def test2(): s=""" nums = [a for a in range(1,1001)] prod2 = reduce(lambda x,y:x*y , nums) """ t = timeit.Timer(stmt=s) return t.repeat(repeat=10,number=100) And this is my result: Loop: [0.08340786340144211, 0.07211491653462579, 0.07162720686361926, 0.06593182661083438, 0.06399049758613146, 0.06605228229559557, 0.06419744588664211, 0.0671893658461038, 0.06477527090075941, 0.06418023793167627] test1 average: 0.0644778902685 HOF: [0.0759414223099324, 0.07616920129277016, 0.07570730355421262, 0.07604965128984942, 0.07547092059389193, 0.07544737286604364, 0.075532959799953, 0.0755039779810629, 0.07567424616704144, 0.07542563650187661] test2 average: 0.0754917512762 On an average loop approach seems to be faster than using HOFs.
Tags (comma-separated)
Save Edits
Cancel