লুপ অপ্টিমাইজেশন প্রায় সব প্রোগ্রামিং ল্যাঙ্গুয়েজের জন্য একই। কম্পাইলার/ইন্টারপ্রিটার অনেক অপ্টিমাইজেশন করে, তবে প্রোগ্রামাররাও লুপের ভেতরের কাজ কমাতে হবে।
কী প্রিন্সিপল: লুপের ভেতরে কম কাজ করান
লুপের ভেতরে যা কিছু থাকে সেটি প্রতিবার এক্সিকিউট হয়। ১ মাইক্রোসেকেন্ডের অপারেশন ১ মিলিয়ন বার করলে ১ সেকেন্ড লাগবে।
খারাপ উদাহরণ: লুপের ভেতরে len() কল
# ধীর - প্রতিবার len(a) কল হচ্ছে
a = [i for i in range(1000000)]
for i in a:
print(i - len(a))
ভালো উদাহরণ: লুপের বাইরে ক্যাশে করুন
# দ্রুত - length একবার ক্যালকুলেট
a = [i for i in range(1000000)]
length = len(a)
for i in a:
print(i - length)
অন্যান্য অপ্টিমাইজেশন টেকনিক
- লুপ আনরোলিং (Loop Unrolling): লুপ বডি কপি পেস্ট করে ইটারেশন কমানো (স্পেস-টাইম ট্রেডঅফ)।
- বিল্ট-ইন ফাংশন ব্যবহার:
map(),filter(),sum(),any(),all()এক্সপ্লিসিট লুপের চেয়ে দ্রুত হতে পারে। - লিস্ট কম্প্রিহেনশন: সাধারণ লুপের চেয়ে দ্রুত এবং পাইথনিক।
- লোকাল ভেরিয়েবল রেফারেন্স: গ্লোবাল লুকআপ এড়াতে লোকাল ভেরিয়েবলে স্টোর করুন।
প্রোফাইলিং
cProfile বা timeit মডিউল ব্যবহার করে বটলनेक খুঁজে বের করুন, অনুমান করবেন না।