আমরা একটি মাঝারি আকারের সি ++ কোড বেস (10Mloc) নিয়ে কাজ করছি যা আমাদের অপ্টিমাইজেশনের প্রচেষ্টা সমানভাবে ধীর হয়ে চলেছে ।
এই কোড বেসটি লাইব্রেরির একটি সেট যা আমরা তাদেরকে কাজে লাগানোর জন্য একত্রিত করি। এই লাইব্রেরিগুলি কীভাবে যোগাযোগ করে তার সাধারণ কাঠামোটি যখন কার্য সম্পাদনের উপর এবং পরে আরও কিছু অংশ যুক্ত করা হত তখন সাধারণ কাঠামোটি খুব বেশি পরিবর্তন করা হয়নি। প্রয়োজনের সময় এবং আমাদের হার্ডওয়্যারটি বিকশিত হওয়ার সাথে সাথে অপ্টিমাইজেশন করা হয়েছিল। এটি ব্যয়বহুল প্রাথমিক সিদ্ধান্তটি খুব পরে প্রকাশিত হয়েছিল। আমরা এখন এমন এক পর্যায়ে এসেছি যেখানে আরও অনুকূলিতকরণগুলি আরও ব্যয়বহুল কারণ তাদের কোড বেসের বড় অংশগুলি পুনরায় লেখার প্রয়োজন হবে। আমরা নিজেদেরকে একটি অযাচিত স্থানীয় নূন্যতমের কাছে পৌঁছে দেখি যেহেতু আমরা জানি যে নীতিগতভাবে কোডটি আরও দ্রুত চালাতে সক্ষম হওয়া উচিত।
এমন কোনও সফল পদ্ধতি রয়েছে যা বিশ্বব্যাপী অনুকূলতম সম্পাদনামূলক সমাধানের জন্য কোনও কোড বেসের বিবর্তনকে কীভাবে সরিয়ে নিতে পারে যা সহজে অপ্টিমাইজেশনের সুযোগগুলি দ্বারা সহজেই বিভ্রান্ত হয় না তা স্থির করতে সহায়তা করে?
সম্পাদনা
আমরা বর্তমানে প্রোফাইল কীভাবে প্রশ্নের উত্তর দিতে:
বিব্রতকরভাবে সমান্তরাল উভয়ই এই কোডটি কীভাবে ব্যবহার করা যেতে পারে আমাদের কাছে কেবল দুটি ভিন্ন পরিস্থিতি রয়েছে। ইনপুটগুলির একটি বড় নমুনা এবং আরও বিশদ রান (গড় নির্দেশের ব্যয়, শাখার ভুলবিধি এবং ক্যাশে সম্পর্কিত সমস্যা) এর ওপরে ওয়াল ঘড়ি সময়ের সাথে উভয়ই প্রোফাইলিং করা হয়। এটি অত্যন্ত কার্যকর হয় যেহেতু আমরা আমাদের অত্যন্ত সমজাতীয় মেশিনগুলিতে (কয়েক হাজার অভিন্ন মেশিনের একটি গোষ্ঠী) চালাই। যেহেতু আমরা সাধারণত আমাদের সমস্ত মেশিনগুলিকে বেশিরভাগ সময় ব্যস্ত রাখি দ্রুত চালানো মানে আমরা অতিরিক্ত নতুন স্টাফ দেখতে পারি। সমস্যাটি অবশ্যই এটি যখন নতুন ইনপুট বৈচিত্রগুলি প্রদর্শিত হয়, তারা সম্ভবত দেরিতে-আগত শাস্তি পেতে পারে যেহেতু আমরা অন্যান্য ব্যবহারের ক্ষেত্রে সর্বাধিক সুস্পষ্ট অদক্ষতা অপসারণ করি, সুতরাং সম্ভবত "অনুকূলভাবে চলমান" পরিস্থিতি সংকুচিত করে দেয়।
sloc
। আমি এটিকে "মাঝারি আকারের" বলেছি কারণ এখানে "বড়" কী বলে বিবেচিত তা আমার কোনও ধারণা নেই।