প্রথমত, কিছু স্পষ্টতা: পাইথন একটি ভাষা। বেশ কয়েকটি আলাদা দোভাষী রয়েছে যা পাইথন ভাষায় লিখিত কোডটি কার্যকর করতে পারে। রেফারেন্স বাস্তবায়ন (সিপিথন) হ'ল সাধারণত "পাইথন" সম্পর্কে কথা বলার সময় যা উল্লেখ করা হয় তা বাস্তবায়ন, তবে পারফরম্যান্সের বৈশিষ্ট্যগুলির বিষয়ে কথা বলার সময় সুনির্দিষ্ট হওয়া গুরুত্বপূর্ণ, কারণ এগুলি বাস্তবায়নের মধ্যে বন্যভাবে পৃথক হতে পারে।
পাইথনে পারফরম্যান্সের সাথে আপোস না করে আমরা কীভাবে এবং কোথায় এসআরপি আলিঙ্গন করব, কারণ এর সহজাত প্রয়োগটি সরাসরি এর প্রভাব ফেলে?
কেস ১।)
যদি আপনার কাছে খাঁটি পাইথন কোড থাকে (<= পাইথন ল্যাঙ্গুয়েজ সংস্করণ 3.5, 3.6 এর "বিটা স্তর সমর্থন" রয়েছে) যা কেবল খাঁটি পাইথন মডিউলগুলিতে নির্ভর করে আপনি সর্বত্র এসআরপি আলিঙ্গন করতে পারেন এবং এটি চালানোর জন্য পাইপাই ব্যবহার করতে পারেন। পাইপাই ( https://morepypy.blogspot.com/2019/03/pypy-v71-released-now-uses-utf-8.html ) পাইথন ইন্টারপ্রেটার যা জাস্ট ইন টাইম সংকলক (জেআইটি) রয়েছে এবং ফাংশনটি সরাতে পারে এক্সেকিউটেড কোড (কয়েক সেকেন্ড আইআইআরসি) ট্রেস করে "উষ্ণ" হওয়ার পর্যাপ্ত সময় থাকলে ওভারহেডকে কল করুন। **
যদি আপনি সিপিথন ইন্টারপ্রেটার ব্যবহারে সীমাবদ্ধ থাকেন তবে আপনি ধীরে ধীরে ফাংশনগুলি সি-তে লেখা এক্সটেনশানগুলিতে বের করতে পারেন যা প্রাক-সংকলনযুক্ত হবে এবং কোনও দোভাষী ওভারহেডে ভুগবে না। আপনি এখনও যেকোন স্থানে এসআরপি ব্যবহার করতে পারেন তবে আপনার কোডটি পাইথন এবং সি এর মধ্যে বিভক্ত হয়ে যাবে বা না রক্ষণাবেক্ষণের জন্য এটি বেছে নেওয়া ভালভাবে এসআরপি ছাড়ার চেয়ে ভাল বা খারাপ কিনা কেবলমাত্র পাইথন কোডের সাথে লেগে থাকা আপনার দলের উপর নির্ভর করে, তবে আপনার যদি পারফরম্যান্সের সমালোচনা বিভাগ রয়েছে কোড, এটি নিঃসন্দেহে সিপিথনের দ্বারা ব্যাখ্যা করা সবচেয়ে অনুকূল খাঁটি পাইথন কোডের চেয়েও দ্রুত হবে। পাইথনের দ্রুততম গাণিতিক গ্রন্থাগারগুলির মধ্যে এই পদ্ধতিটি ব্যবহার করা হয় (নম্পু এবং স্কিপি আইআইআরসি)। কেস 2 এর একটি দুর্দান্ত সিগু ...
কেস ২।)
আপনার কাছে পাইথন কোড রয়েছে যা সি এক্সটেনশান ব্যবহার করে (বা সি এক্সটেনশনগুলি ব্যবহার করে এমন লাইব্রেরিতে নির্ভর করে), পাইপই কীভাবে সেগুলি লিখিত হয়েছে তার উপর নির্ভর করে দরকারী হতে পারে বা নাও হতে পারে। বিশদ জানতে http://doc.pypy.org/en/latest/extending.html দেখুন , তবে সংক্ষিপ্তসারটি হ'ল সিটিএফএফআই এর ন্যূনতম ওভারহেড থাকে যখন সিটিটাইপস ধীরে ধীরে থাকে (পাইপাই সহ এটি ব্যবহার করা সিপিথনের চেয়েও ধীর হতে পারে)
সাইথন ( https://cython.org/ ) অন্য একটি বিকল্প যা আমার সাথে তেমন অভিজ্ঞতা নেই। আমি সম্পূর্ণতার জন্য এটি উল্লেখ করেছি যাতে আমার উত্তর "নিজেরাই দাঁড়াতে" পারে তবে কোনও দক্ষতার দাবি করি না। আমার সীমিত ব্যবহার থেকে, অনুভূত হয়েছিল যে পাইপাইয়ের সাথে "ফ্রি" পেতে পারা যায় সেই একই গতির উন্নতি পেতে আমার আরও কঠোর পরিশ্রম করতে হয়েছিল এবং যদি পাইপাইয়ের চেয়ে আমার আরও ভাল কিছু প্রয়োজন হয় তবে এটি নিজের সি এক্সটেনশনটি লিখতে যেমন সহজ ছিল ( যদি আমি অন্য কোথাও কোডটি পুনরায় ব্যবহার করি বা এর একটি অংশটি একটি লাইব্রেরিতে বের করি তবে এর সুবিধা রয়েছে যা আমার সমস্ত কোডটি এখনও কোনও পাইথন ইন্টারপ্রেটারের অধীনে চলতে পারে এবং সাইথন দ্বারা চালিত করার প্রয়োজন নেই)।
আমি সাইথনে "লক" হওয়ার ভয় পেয়েছি, যেখানে পাইপাইয়ের জন্য লেখা যে কোনও কোড সিপিথনের অধীনেও চলতে পারে।
** উত্পাদনে পাইপাইতে কিছু অতিরিক্ত নোট
বৃহত্তর কোডবেসে পাইপাইতে "আপনাকে লক ইন" করার ব্যবহারিক প্রভাব রয়েছে এমন যে কোনও পছন্দ করার বিষয়ে খুব সতর্ক হন। কারণ কয়েকটি (খুব জনপ্রিয় এবং দরকারী) তৃতীয় পক্ষের গ্রন্থাগারগুলি পূর্বের কারণে উল্লিখিত কারণগুলির জন্য দুর্দান্ত খেলছে না, পরে যদি আপনি বুঝতে পারেন যে আপনার যদি এই লাইব্রেরির একটি দরকার হয় তবে এটি পরে খুব কঠিন সিদ্ধান্ত নিতে পারে। আমার অভিজ্ঞতাটি প্রাথমিকভাবে পাইপাই ব্যবহার করে কিছু (তবে সমস্ত নয়) কোনও সংস্থার পরিবেশে সংবেদনশীল পারফরম্যান্সের গতি বাড়ানোর জন্য যেখানে এটি আমাদের উত্পাদনের পরিবেশে নগণ্য জটিলতা যুক্ত করে (আমাদের ইতিমধ্যে একাধিক ভাষা মোতায়েন করা হয়েছে, কয়েকটি বিভিন্ন বড় সংস্করণ সহ ২.7 বনাম রয়েছে) 3.5 চালিয়ে যাই হোক না কেন)।
আমি পাইপাই এবং সিপিথন উভয়ই নিয়মিত ব্যবহার করে আমাকে কোড লিখতে বাধ্য করেছি যা কেবলমাত্র ভাষা স্পেসিফিকেশনের দ্বারা প্রদত্ত গ্যারান্টিগুলিতে নির্ভর করে, এবং যে কোনও সময়ে পরিবর্তনের সাপেক্ষে প্রয়োগের বিশদগুলিতে নয়। আপনি এই জাতীয় বিবরণটি অতিরিক্ত বোঝা হিসাবে ভাবতে পারেন তবে আমি এটি আমার পেশাদার বিকাশে মূল্যবান বলে মনে করেছি এবং পাইথন ইকোসিস্টেমের জন্য এটি সামগ্রিকভাবে "স্বাস্থ্যকর" বলে মনে করি।