কম্পিউটার টিউটোরিয়াল

পাইথন কোড অপ্টিমাইজেশনের ১১ টি কার্যকর টিপস

সাধারণত পাইথন অন্যান্য কম্পাইল্ড ল্যাঙ্গুয়েজ (যেমন C, C++) 만큼 দ্রুত বা দক্ষ নয়। তবুও অনেক বড় কোম্পানি প্রমাণ করেছে যে পাইথন কোড বড় ওয়ার্কলোড হ্যান্ডেল করতে পারে। এই লেখায় কিছু টিপস শেয়ার করা হলো যাতে আপনার পাইথন প্রোগ্রাম আরও দ্রুত ও দক্ষ চলে।

টিপ ১: বিল্ট-ইন ফাংশন ব্যবহার করুন

পাইথনে দক্ষ কোড লিখা যায়, কিন্তু বিল্ট-ইন ফাংশনগুলো (যারা C-তে লেখা) কে বিট করা খুব কঠিন। পাইথনের বিল্ট-ইন ফাংশনগুলোর তালিকা নিচে দেওয়া হলো।

টিপ ২: ভেরিয়েবল সোয়্যাপের জন্য মাল্টিপল অ্যাসাইনমেন্ট ব্যবহার করুন

>>> # বরং এই পদ্ধতি ব্যবহার করুন - যা দ্রুততর
>>> x, y = y, x

# এই পদ্ধতিটি ধীরতর
>>> temp = x
>>> x = y
>>> y = temp

টিপ ৩: গ্লোবাল ভেরিয়েবল এড়িয়ে লোকাল ভেরিয়েবল ব্যবহার করুন

পাইথন লোকাল ভেরিয়েবল রিট্রিভ করার চেয়ে গ্লোবাল ভেরিয়েবল রিট্রিভ করলে ধীর। তাই সম্ভব হলে গ্লোবাল ভেরিয়েবল এড়িয়ে চলুন।

টিপ ৪: যেখানেই সম্ভব 'in' কীওয়ার্ড ব্যবহার করুন

মেম্বারশিপ চেক করার জন্য সাধারণত in কীওয়ার্ড ব্যবহার করুন। এটি ক্লিন এবং দ্রুত।

for key in sequence:
    print("Hello", key)

টিপ ৫: অনন্ত লুপের জন্য 'while 1' ব্যবহার করুন

যখন প্রোগ্রামে অনন্ত লুপ চালাতে হয় (যেমন লিসেনিং সকেট), while True ও একই কাজ করে, কিন্তু while 1 একটি সিঙ্গেল জাম্প অপারেশন হওয়ায় কিছুটা দ্রুত।

>>> while 1:
    # do something, faster with while 1
>>> while True:
    # do something, একই অপারেশন কিন্তু কিছুটা ধীর

টিপ ৬: লিস্ট কম্প্রিহেনশন ব্যবহার করুন

পাইথন ২.০ থেকে লিস্ট কম্প্রিহেনশন ব্যবহার করে অনেক for এবং while ব্লক রিপ্লেস করা যায়। লিস্ট কম্প্রিহেনশন দ্রুতার কারণ পাইথন ইন্টারপ্রেটার লুপিংয়ের প্রিডিক্টেবল প‍্যাটার্ন স্পট করতে পারে। এটি আরও রিডেবল এবং অধিকাংশ ক্ষেত্রে এক্সট্রা কাউন্টিং ভেরিয়েবল বাঁচায়।

উদাহরণস্বরূপ, ১ থেকে ২৫ পর্যন্ত সম সংখ্যা খুঁজে বের করতে এক লাইনে:

>>> # লিস্ট কম্প্রিহেনশন - ভালো পদ্ধতি
>>> print([i for i in range(25) if i % 2 == 0])
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]

>>> # অন্য পদ্ধতি - কম দক্ষ
>>> i = 0
>>> evens = []
>>> while i < 25:
    if i % 2 == 0:
        evens.append(i)
    i += 1
>>> print(evens)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]

টিপ ৭: পাইথন জেনারেটর ব্যবহার করে ডিমান্ড-অন-ভ্যালু পান

পাইথন জেনারেটর মেমরি বাঁচায় এবং পারফরম্যান্স বাড়ায়। উদাহরণস্বরূপ, ভিডিও স্ট্রিমিংয়ের সময় পুরো স্ট্রিম না পাঠিয়ে চানক বাইটস পাঠানো যায়।

>>> chunkBytes = (1000 * i for i in range(1000))
>>> next(chunkBytes)
0
>>> next(chunkBytes)
1000

টিপ ৮: itertools মডিউল ব্যবহার করুন

itertools মডিউল ইটারেশন এবং কম্বিনেশনের জন্য খুবই কার্যকর এবং দক্ষ।

উদাহরণ: লিস্ট [1, 2, 3, 4]-এর সকল পারমুটেশন জেনারেট করা:

>>> import itertools
>>> iter1 = itertools.permutations([1, 2, 3, 4])
>>> list(iter1)
[(1, 2, 3, 4), (1, 2, 4, 3), ...]

টিপ ৯: সর্টেড লিস্ট মেইনটেইনের জন্য bisect মডিউল ব্যবহার করুন

এটি একটি ফ্রি বাইনারি সার্চ ইমপ্লিমেন্টেশন এবং সর্টেড সিকোয়েন্সের জন্য দ্রুত ইনসারশন টুল।

>>> import bisect
>>> bisect.insort(list, element)

এলিমেন্ট ইনসার্ট করার পর লিস্ট সর্টেড থাকে, sort() আবার কল করার প্রয়োজন নেই। এটি দীর্ঘ সিকোয়েন্সের জন্য খুব খরচবাচক।

টিপ ১০: মেম্বারশিপ টেস্টের জন্য ডিকশনারি এবং সেট ব্যবহার করুন

ডিকশনারি এবং সেট হ্যাশ টেবিল দিয়ে ইমপ্লিমেন্টেড, তাই সেখানে কোনো এলিমেন্ট আছে কিনা চেক করা পাইথনে খুব দ্রুত। অনেক সময় লুকআপ O(1) তে হয়।

>>> lst = ['a', 'ab', 'abc']  # ধীর - লিস্টে মেম্বারশিপ চেক
>>> 'abc' in lst
True
>>> mySet = set(['a', 'ab', 'abc'])  # দ্রুত - সেট বা ডিকশনারিতে চেক
>>> 'abc' in mySet
True

টিপ ১১: পাইথন ডেকোরেটর দিয়ে রেজাল্ট ক্যাশ করুন (মেমোয়াইজেশন)

পাইথন ডেকোরেটর সিম্বল @। ডেকোরেটর শুধু ট্রেসিং, লকিং বা লগিংয়ের জন্য নয়, এটিকে ফাংশন ডেকোরেট করতে পারি যাতে এটি পরে প্রয়োজনীয় রেজাল্ট মনে রাখে (মেমোয়াইজেশন)।

>>> from functools import wraps
>>> def memo(f):
    cache = {}
    @wraps(f)
    def wrap(*arg):
        if arg not in cache:
            cache[arg] = f(*arg)
        return cache[arg]
    return wrap

এই ডেকোরেটরটি ফিবোনাচ্চি ফাংশনে ব্যবহার করা যাক:

>>> @memo
def fib(i):
    if i < 2:
        return 1
    return fib(i-1) + fib(i-2)

মূল ধারণা হলো ফাংশনকে এনহ্যান্স (ডেকোরেট) করা যাতে এটি প্রতিটি ক্যালকুলেট করা ফিবোনাচ্চি টার্ম মনে রাখে। যদি ক্যাশে থাকে, তবে আবার ক্যালকুলেট করার প্রয়োজন নেই।

  1. মার্জ সর্টের পাইথন প্রোগ্রাম

  2. হিপ সর্টের পাইথন প্রোগ্রাম

  3. ওয়ার্ডপ্রেসের জন্য ইমেজ অপ্টিমাইজেশন টিপস

  4. প্রতিটি মার্কেটারের জানা দরকার টপ ৫টি প্রমাণিত ASO কৌশল