Performance Optimization
পাইথন তার ডেভেলপমেন্ট স্পিডের জন্য বিখ্যাত, তবে এক্সিকিউশন স্পিড কিছুটা কম হতে পারে। একজন এক্সপার্ট হিসেবে আপনার জানা থাকা দরকার কিভাবে পাইথন কোডকে অপ্টিমাইজ করে রকেটের মতো দ্রুত করা যায়।
১. Profiling (কোড মেপে দেখা)
অপ্টিমাইজ করার আগে জানতে হবে কোথায় সময় বেশি লাগছে। এর জন্য cProfile এবং timeit ব্যবহার করা হয়।
# কমান্ড লাইন থেকে প্রফাইলিং:
python -m cProfile my_script.pyimport timeit
# একটি কোড ১০০০০ বার রান করে টাইম দেখা
t = timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
print(t)২. Data Structure Selection
সঠিক ডাটা স্ট্রাকচার ব্যবহার করলে পারফরম্যান্স কয়েক গুণ বেড়ে যেতে পারে।
- অনেক বড় তালিকায় ডাটা খোঁজার জন্য List এর বদলে Set ব্যবহার করুন (O(1) complexity)।
- মেমরি বাঁচাতে Generator ব্যবহার করুন।
- ফিক্সড সাইজ অ্যারের জন্য
array.arrayবাnumpyব্যবহার করুন।
৩. Built-in Functions & Libraries
পাইথনের বিল্ট-ইন ফাংশনগুলো (map, filter, sum) C-ল্যাঙ্গুয়েজে লেখা, তাই এগুলো ম্যানুয়াল লুপের চেয়ে অনেক দ্রুত কাজ করে।
# স্লো:
total = 0
for i in range(1000000):
total += i
# ফাস্ট:
total = sum(range(1000000))৪. Multi-Processing (CPU কাজের জন্য)
যদি আপনার অনেক বড় ক্যালকুলেশন থাকে, তবে তা সিঙ্গল থ্রেডে না রেখে মাল্টি-প্রসেসিং এ ভাগ করে দিন। (বিস্তারিত লেভেল ৪: Concurrency)
৫. Cython এবং C-Extensions
যদি কোনো নির্দিষ্ট অংশ অনেক বেশি স্লো হয়, তবে সেই অংশটুকু Cython দিয়ে C-তে কনভার্ট করা যায় অথবা C/C++ দিয়ে লিখে পাইথনে ইম্পোর্ট করা যায়।
৬. PyPy (Alternative Interpreter)
অনেক সময় স্ট্যান্ডার্ড CPython এর বদলে PyPy ইন্টারপ্রেটার ব্যবহার করলে কোড ৫-১০ গুণ বেশি গতিতে রান হতে পারে।
TIP
একটি গোল্ডেন রুল হলো: "Premature optimization is the root of all evil." অর্থাৎ আগে কোড লিখুন, প্রোফাইলিং করুন, এবং শুধু যেখানে সমস্যা আছে সেখানেই অপ্টিমাইজ করুন।