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

পাইথন কোড ফাংশনের ভেতর দ্রুত কেন চলে?

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

১. লোকাল ভেরিয়েবল স্টোরেজ: ফিক্সড-সাইজ অ্যারে

  • ফাংশন কম্পাইল হওয়ার সময় লোকাল ভেরিয়েবলগুলো একটি ফিক্সড-সাইজ অ্যারে-এ স্টোর হয় (ডিকশনারি নয়)।
  • ভেরিয়েবল নামগুলো ইনডেক্সে ম্যাপ হয়।
  • লোকাল ভেরিয়েবল এক্সেস = পয়েন্টার লুকআপ + রেফ কাউন্ট ইনক্রিমেন্ট — খুব দ্রুত।
  • গ্লোবাল ভেরিয়েবল এক্সেস = ডিকশনারি হ্যাশ লুকআপ — আপেক্ষিক ধীর।

২. অপকোড প্রেডিকশন (Opcode Prediction)

  • CPython (স্ট্যান্ডার্ড পাইথন ইমপ্লিমেন্টেশন) বাইটকোড ইন্টারপ্রেট করে।
  • ফাংশনের ভেতর কিছু বাইটকোড ইনস্ট্রাকশন (যেমন LOAD_FAST, STORE_FAST) স্পেশালাইজড এবং প্রেডিক্টেবল।
  • ইন্টারপ্রেটর লুপ এই ইনস্ট্রাকশনগুলো দ্রুত এক্সিকিউট করতে পারে।

CPython কী?

CPython হলো পাইথন ওয়েবসাইট থেকে ডাউনলোড করা স্ট্যান্ডার্ড পাইথন ইমপ্লিমেন্টেশন, যা C ভাষায় লেখা। এটি পাইথন কোডকে বাইটকোডে কম্পাইল করে এবং একটি ইভ্যালুয়েশন লুপে ইন্টারপ্রেট করে।

প্রায়োগিক টিপস

  • লুপ বা পারফরম্যান্স-ক্রিটিক্যাল কোড ফাংশনের ভেতর রাখুন।
  • গ্লোবাল ভেরিয়েবল কম ব্যবহার করুন।
  • global কিওয়ার্ড ব্যবহার করলে কম্পাইলার STORE_FAST বদলে STORE_GLOBAL ব্যবহার করে (ধীর হয়)।
  1. গুগল কোলাবরেটরিতে পাইথন কোড রান করার পদ্ধতি

  2. পাইথনে issubset() ফাংশন

  3. পাইথনে chr() ফাংশন – ইউনিকোড কোড পয়েন্ট থেকে ক্যারেক্টার

  4. পাইথন অন্যান্য ভাষার চেয়ে কেন ধীর?