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