আলফাই উত্তরে একটি টুইস্ট যুক্ত করা , আসলে লুপের জন্য দ্বিতীয়টি সেরা এবং এর চেয়ে প্রায় 6 গুণ বেশি ধীর হবেmap
from functools import reduce
import datetime
def time_it(func, numbers, *args):
start_t = datetime.datetime.now()
for i in range(numbers):
func(args[0])
print (datetime.datetime.now()-start_t)
def square_sum1(numbers):
return reduce(lambda sum, next: sum+next**2, numbers, 0)
def square_sum2(numbers):
a = 0
for i in numbers:
a += i**2
return a
def square_sum3(numbers):
a = 0
map(lambda x: a+x**2, numbers)
return a
def square_sum4(numbers):
a = 0
return [a+i**2 for i in numbers]
time_it(square_sum1, 100000, [1, 2, 5, 3, 1, 2, 5, 3])
time_it(square_sum2, 100000, [1, 2, 5, 3, 1, 2, 5, 3])
time_it(square_sum3, 100000, [1, 2, 5, 3, 1, 2, 5, 3])
time_it(square_sum4, 100000, [1, 2, 5, 3, 1, 2, 5, 3])
মূল পরিবর্তনগুলি হ'ল ধীর sum
কলগুলি দূর করার পাশাপাশি int()
শেষ ক্ষেত্রে সম্ভবত অপ্রয়োজনীয় । লুপ এবং মানচিত্রটিকে একই পদে রাখলে এটি বাস্তবে বেশ বাস্তব হয়ে যায়। মনে রাখবেন যে lambdas কার্মিক ধারণা এবং তাত্ত্বিক পার্শ্ব প্রতিক্রিয়া আছে না হয় বরং, ভাল, তারা করতে পারেন যোগ মত পার্শ্ব প্রতিক্রিয়া আছে a
। পাইথন 3.6.1, উবুন্টু 14.04, ইনটেল (আর) কোর (টিএম) i7-4770 সিপিইউ @ 3.40GHz এর সাথে এই ক্ষেত্রে ফলাফল
0:00:00.257703 #Reduce
0:00:00.184898 #For loop
0:00:00.031718 #Map
0:00:00.212699 #List comprehension