পাইথনের স্রষ্টা, গিডো ভ্যান রসুমের এই পোস্টে পাইথন থেকে জিআইএল অপসারণের প্রাথমিক প্রয়াসের কথা উল্লেখ করা হয়েছে:
হতাশাজনক ফলাফল সহ এটি এর আগে চেষ্টা করা হয়েছিল, এ কারণেই আমি নিজে এটিতে অনেক চেষ্টা করতে নারাজ। ১৯৯৯ সালে গ্রেগ স্টেইন (মার্ক হ্যামন্ডের সাথে?) পাইথনের একটি কাঁটাচামচ তৈরি করেছিলেন (১.৫ আমি বিশ্বাস করি) এটি জিআইএলকে সরিয়ে নিয়েছিল এবং এটি সমস্ত পরিবর্তিত ডেটা স্ট্রাকচারে সূক্ষ্ম দানযুক্ত লক দিয়ে প্রতিস্থাপন করেছিল। তিনি এমন প্যাচও জমা দিয়েছিলেন যা বৈশ্বিক পরিবর্তনীয় ডেটা কাঠামোর উপর নির্ভরতা অনেকগুলি সরিয়ে নিয়েছিল, যা আমি মেনে নিয়েছি। যাইহোক, বেঞ্চমার্কিংয়ের পরে, এটি দেখানো হয়েছিল যে এমনকি প্ল্যাটফর্মে দ্রুততম লকিং আদিম (সেই সময়ে উইন্ডোজ) সহ এটি একক থ্রেডযুক্ত সম্পাদনকে প্রায় দ্বিগুণ করে তোলে, যার অর্থ দুটি সিপিইউতে আপনি আরও কিছুটা কাজ পেতে পারেন জিআইএল ছাড়া জিআইএল ছাড়া একক সিপিইউয়ের চেয়েও সম্পন্ন হয়েছে। এটি যথেষ্ট ছিল না, এবং গ্রেগের প্যাচটি বিস্মৃত হয়ে যায়। (পারফরম্যান্সে গ্রেগের রাইটিংআপ দেখুন))
আমি প্রকৃত ফলাফলের সাথে খুব কমই তর্ক করতে পারি, তবে আমি সত্যিই ভাবছি কেন এটি ঘটেছিল। সম্ভবত, সিপিথন থেকে জিআইএল অপসারণের মূল কারণটি রেফারেন্স কাউন্টিং মেমরি ম্যানেজমেন্ট সিস্টেম। একটি সাধারণ পাইথন প্রোগ্রাম কল করবে Py_INCREFএবং Py_DECREFকয়েক হাজার বা কয়েক মিলিয়ন বার কল করবে , যদি আমরা এর চারপাশে তালা গুটিয়ে রাখি তবে এটি একটি মূল বিষয়বস্তু হিসাবে পরিণত হবে।
তবে, আমি বুঝতে পারছি না কেন পারমাণবিক আদিম সংযোজন একক থ্রেডেড প্রোগ্রামকে ধীর করে দেবে । ধরুন আমরা কেবল সিপিথনকে সংশোধন করেছি যাতে প্রতিটি পাইথন অবজেক্টের রিফকઉન્ટ ভেরিয়েবলটি একটি পারমাণবিক আদিম ছিল। এবং তারপরে আমরা কেবলমাত্র একটি পারমাণবিক বর্ধন করি (রেফার-এন্ড-এড নির্দেশনা) করি যখন আমাদের রেফারেন্সের সংখ্যা বাড়ানো দরকার। এটি পাইথন রেফারেন্স গণনা থ্রেড-নিরাপদ করে তুলবে এবং একক থ্রেডযুক্ত অ্যাপ্লিকেশনটিতে কোনও পারফরম্যান্স জরিমানা করা উচিত নয়, কারণ কোনও লক যুক্তি থাকবে না।
তবে হায়, আমার চেয়ে বেশি স্মার্ট যারা চেষ্টা করেছেন এবং ব্যর্থ হয়েছেন, তাই স্পষ্টতই আমি এখানে কিছু মিস করছি। আমি যেভাবে সমস্যাটি দেখছি তাতে কী ভুল?