আমিই এখানে শস্যের বিরুদ্ধে যাব এবং বলব, শিখতে খুব বেশি তাড়াতাড়ি হয় না অপটিমাইজেশন, বিশেষত অ্যাসেম্বলি অপটিমাইজেশন এবং আরও গুরুত্বপূর্ণভাবে, সমাবেশে ডিবাগিং সম্পর্কে না। আমি বিশ্বাস করি যে আপনি যদি ছাত্র হন তবে এর সর্বাধিক উপকার পাবেন (কারণ তারপরে আপনার হারানোর খুব কম পরিমাণ নেই [অর্থাত সময় / অর্থ বুদ্ধিমান]) এবং যা কিছু অর্জন করা উচিত।
আপনি যদি শিল্পে থাকেন এবং বিধানসভায় ঘোরাফেরা করার দায়িত্ব না পান তবে তা করবেন না। অন্যথায়, আপনি যদি শিক্ষার্থী হন বা সাধারণভাবে সময় থাকেন তবে আমি প্রোগ্রামগুলি বিচ্ছিন্ন করতে শেখার সময়টি খুঁজে পেতাম এবং সংকলকটির চেয়ে আরও ভাল সমাধান নিয়ে আসতে পারি কিনা তা দেখতে আমি সময় পেতাম। আমি না পারলে কে পাত্তা দেয়! আমি কীভাবে কম্পাইলার লিখতে হয়েছিল তা শিখেছি এবং যখন আপনি রিলিজ কোডে কোনও বাগের মুখোমুখি হন (কোনও ডিবাগ চিহ্ন নেই) এবং বিচ্ছিন্নতার দিকে তাকিয়ে থাকেন কারণ কেবলমাত্র এটিই আপনি দেখতে পারেন।
উত্তর
অপটিমাইজেশন সম্পর্কে শেখার জন্য এটি খুঁজে পাওয়া সেরা উত্সগুলির মধ্যে একটি।
http://www.agner.org/optimize/
অভিমান
আপনি যদি প্রধান বিকাশকারীদের কিছু নিবন্ধ পড়ে থাকেন (উদাহরণস্বরূপ, EASTL তৈরির পিছনে যুক্তি এবং কোডটির নিবিড় নিরীক্ষণ আপনাকে এই জাতীয় মন্তব্যে নিয়ে যাবে, কারণ জিসিসি এটির ইনলাইনিংয়ে ভয়ানক, যদি বিবৃতি আপনাকে বলে দেবে, সংখ্যাগরিষ্ঠটি কী লোকেরা আপনাকে বিশ্বাস করে যে সংকলকটি সর্বদা সঠিক নয়, গেম বিকাশের ক্ষেত্রে বিশেষত) এবং তারপরে শিল্পে পা রাখুন আপনি দেখতে পাবেন যে অপ্টিমাইজেশন একটি নিত্যপ্রয়োজনীয় জিনিস এবং অ্যাসেম্বলি আউটপুট বলতে কী বোঝায় তা জেনে একটি বড় প্লাস। এছাড়াও, লোকেরা বুঝতে পারে না (বিশেষত স্ট্যাকওভারফ্লোতে) যে প্রোফাইলিং গেমগুলি খুব শক্ত এবং সর্বদা নির্ভুল নয়।
যদিও একটি সতর্কতা আছে। আপনি কিছু অপ্টিমাইজ করার সময় এবং পরে বুঝতে পারেন যে সময় নষ্ট হয়েছিল। তবে আপনি কী শিখলেন? আপনি একই ভুল একই পরিস্থিতিতে পুনরাবৃত্তি না শিখেছি।
এসও এখন যা গ্রহণ করছে তা আমার মতে বক্তব্যটির ধর্মীয় অবস্থানটি আপনি প্রোফাইল না করা এবং চিন্তিত না হওয়া পর্যন্ত অনুকূলিত হন না , সংকলকটি আপনার চেয়ে ভাল জানেন । এটা পড়াশোনা বাধা দেয়। আমি এই শিল্পের বিশেষজ্ঞদের জানি যারা গেমটি অপ্টিমাইজ করার জন্য এবং এটি ডিবাগ করার জন্য অ্যাসেমব্লিতে ঘুরে বেড়াতে খুব ভাল অর্থ (এবং আমি খুব ভাল অর্থ বোঝাতে চাইছি) দিতে পারি কারণ সংকলকটি এতে খারাপ বা কেবল আপনাকে সহায়তা করতে পারে না, কারণ, ভাল, এটি পারবেন না (জিপিইউ সম্পর্কিত ক্র্যাশ, ক্র্যাশ যেখানে ডেটা জড়িত সেখানে কোনও ডিবাগারে পড়া অসম্ভব ইত্যাদি ইত্যাদি)!
যদি কেউ এমনটি করতে ভালবাসেন, এখনও তা পুরোপুরি উপলব্ধি করতে পারেন নি, তবে এখানে প্রশ্নটি জিজ্ঞাসা করে এবং উত্তরগুলির কাছ থেকে দূরে সরিয়ে / বন্ধ করে দেওয়া হয়েছে যা আপনার চেয়ে ভাল জানেন! এবং কখনই সেই উচ্চ বেতনের প্রোগ্রামারদের একজন হয় না?
একটি চূড়ান্ত চিন্তা। আপনি যদি তাড়াতাড়ি এই কাজটি শুরু করেন, আপনি শীঘ্রই দেখতে পাবেন যে আপনি কোড লেখা শুরু করবেন যা সবচেয়ে খারাপ, কোনও কার্যকারিতা উন্নতি হয়নি কারণ সংকলকটি একইভাবে বা সর্বোত্তমভাবে অনুকূল করেছে, কিছু কার্যকারিতা উন্নতি করেছে কারণ এখন সংকলক এটিকে অপ্টিমাইজ করতে পারে । উভয় ক্ষেত্রেই, এটি অভ্যাস হয়ে গেছে এবং আপনি আগের মতো করে কোড লেখার ক্ষেত্রে কোনও ধীরগতি নেই। কয়েকটি উদাহরণ রয়েছে (আরও অনেকগুলি রয়েছে):
- প্রাক-ইনক্রিমেন্টিং যদি না আপনি সত্যিই পোস্ট-ইনক্রিমেন্ট চান
- লুপের মধ্যে ধারকটিতে আকার () কল করার চেয়ে ধ্রুবক স্থানীয় আকারের পরিবর্তনশীল ব্যবহার করে ধারকগুলির জন্য লুপগুলি লেখা ing
সম্পাদনা: শিল্পে আরও 8 বছর পরে আপডেট। সমাবেশ শিখুন। কীভাবে অপ্টিমাইজারগুলি কাজ করে এবং তারা যে সমাবেশটি উত্পন্ন করে তা শিখুন (কম্পাইলার এক্সপ্লোরার এটির জন্য দুর্দান্ত সরঞ্জাম) আমি টেস্ট বিল্ডগুলিতে (অভ্যন্তরীণ পরীক্ষার জন্য অনুকূলিত বিল্ডস) অগণিত ক্র্যাশগুলি পেরিয়ে এসেছি যেখানে আপনি ডিবাগ চিহ্ন সহ এমনকি ডিবাগারের উপর নির্ভর করতে পারবেন না। সংকলকটি অনেকগুলি জিনিস অনুকূলিত করেছে এবং ক্র্যাশ ডাম্প থেকে বাগটি খুঁজে পেতে আপনার মূল্যবান তথ্যের একমাত্র উত্স হ'ল সমাবেশ। আপনি সৌভাগ্যবান এবং বিল্ড কাতারে প্রথম হলে প্রতিটি বিল্ড 30-40 মিনিট লাগে - যাতে আপনি বাগটি আলাদা করতে কিছু traditionalতিহ্যবাহী কৌশলগুলির উপর নির্ভর করতে পারবেন না। মাল্টিপ্লেয়ার জিনিসগুলি আরও খারাপ করে। সমাবেশ জেনে রাখা এবং কীভাবে অপ্টিমাইজড অ্যাসেমব্লি পড়তে হয় তা আপনাকে দলের পক্ষে আরও ভাল এবং শেষ পর্যন্ত আরও মূল্যবান করে তুলবে।