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