না, তা হয় না ।
সিপিথন বাইট কোডের সংকলনটি কেবলমাত্র একটি ছোট পীফোল অপটিমাইজারের মধ্য দিয়ে যায় যা কেবলমাত্র বেসিক অপ্টিমাইজেশানগুলি করার জন্য ডিজাইন করা হয়েছে ( এই অপ্টিমাইজেশনের আরও তথ্যের জন্য টেস্ট স্যুটে টেস্ট_পিফহোলারপিপি দেখুন )।
আসলে কী ঘটতে চলেছে তা একবার dis
দেখার জন্য * উত্পাদিত নির্দেশিকা দেখতে * ব্যবহার করুন । প্রথম কার্যের জন্য, অ্যাসাইনমেন্টটি সহ:
from dis import dis
dis(func)
2 0 LOAD_CONST 1 (42)
2 STORE_FAST 0 (a)
3 4 LOAD_FAST 0 (a)
6 RETURN_VALUE
দ্বিতীয় কার্যের জন্য:
dis(func2)
2 0 LOAD_CONST 1 (42)
2 RETURN_VALUE
প্রথমটিতে আরও দুটি (দ্রুত) নির্দেশাবলী ব্যবহৃত হয়: STORE_FAST
এবং LOAD_FAST
। এগুলি একটি দ্রুত স্টোর তৈরি করে এবং fastlocals
বর্তমান এক্সিকিউশন ফ্রেমের অ্যারেতে মানটি ধরেছে। তারপরে, উভয় ক্ষেত্রেই একটি RETURN_VALUE
সম্পাদিত হয়। সুতরাং, সঞ্চালনের জন্য কম কমান্ডের কারণে দ্বিতীয়টি এত কম দ্রুততর হয়।
সাধারণভাবে, সচেতন হন যে সিপিথন সংকলক এটি সম্পাদনকারী অপটিমাইজেশনগুলিতে রক্ষণশীল । এটি অন্য সংকলকগুলির মতো স্মার্ট হওয়ার চেষ্টা করে না (যা সাধারণভাবে কাজ করার জন্য আরও অনেক তথ্য রয়েছে)। মূল নকশা লক্ষ্য, স্পষ্টতই সঠিক হওয়া ব্যতীত, ক) এটিকে সহজ রাখা এবং খ) এগুলি সংকলনের ক্ষেত্রে যতটা সম্ভব দ্রুত হওয়া যাতে আপনি কোনও সংকলন পর্ব বিদ্যমান বলেও লক্ষ্য করেন না।
শেষ অবধি, এ জাতীয় ছোট সমস্যা নিয়ে নিজেকে কষ্ট দেওয়া উচিত নয়। গতিতে লাভটি পাইথনকে ব্যাখ্যা করার কারণে উপস্থাপিত দ্বারা ক্ষুদ্র, ধ্রুবক এবং বামনযুক্ত।
* dis
একটি অল্প পাইথন মডিউল যা আপনার কোডটি ডিস-এসেম্বল করে, আপনি পাইথন বাইকোড যা ভিএম চালিত করবে তা দেখতে আপনি এটি ব্যবহার করতে পারেন।
দ্রষ্টব্য: @ জর্ন ভার্নির একটি মন্তব্যে যেমন বলা হয়েছে, এটি পাইথনের সিপিথন বাস্তবায়নের জন্য সুনির্দিষ্ট। অন্যান্য বাস্তবায়নগুলি যদি তারা ইচ্ছা করে তবে আরও আক্রমণাত্মক অনুকূলকরণ করতে পারে, সিপিথন এটি না করে।
dis.dis(..)
উভয় ব্যবহার করেন তবে দেখতে পাচ্ছেন যে একটি পার্থক্য রয়েছে , তাই হ্যাঁ। তবে বেশিরভাগ বাস্তব বিশ্বের অ্যাপ্লিকেশনগুলিতে ফাংশনটিতে প্রসেসিংয়ের বিলম্বের তুলনায় এর ওভারহেড খুব বেশি নয় not