অ্যাসেমব্লিতে [বন্ধ]


21

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

যাইহোক আমার প্রশ্নটি আরও সাধারণ: আমি কীভাবে আলগোরিদিমগুলি / লুপগুলি / for_each / ইত্যাদি অনুকূলকরণ শুরু করব। সমাবেশ ব্যবহার, সাধারণ টিপস স্বাগত যদিও। আমি বিশেষত ভাল বই খুঁজছি, কারণ এই বিষয়টিতে ভাল বই পাওয়া সত্যিই কঠিন। মত সেখানে আউট কিছু ছোট নিবন্ধ আছে এই এক , কিন্তু এখনও একটি আলগোরিদিম / খেলা নিখুত যথেষ্ট জ্ঞান না ...

আমি আশা করি সেখানে একটি আধুনিক ভাল বই আছে, যা আমি সন্ধান করতে পারি না ...


1
এটি সরাসরি আপনার প্রশ্নের উত্তর দেয় না, তবে শোষণকারী (তথাকথিত অভিযোজক) এ * তদন্ত করা হয়েছে এবং সত্যই ভাল পারফরম্যান্স রয়েছে (যার অর্থ আপনার এএসএম ব্যবহার করে এটি অপ্টিমাইজ করার প্রয়োজন হবে না)। কটাক্ষপাত আছে ডি * লাইট
জোনাথন ডিকিনসন

উত্তর:


21

আমিই এখানে শস্যের বিরুদ্ধে যাব এবং বলব, শিখতে খুব বেশি তাড়াতাড়ি হয় না অপটিমাইজেশন, বিশেষত অ্যাসেম্বলি অপটিমাইজেশন এবং আরও গুরুত্বপূর্ণভাবে, সমাবেশে ডিবাগিং সম্পর্কে না। আমি বিশ্বাস করি যে আপনি যদি ছাত্র হন তবে এর সর্বাধিক উপকার পাবেন (কারণ তারপরে আপনার হারানোর খুব কম পরিমাণ নেই [অর্থাত সময় / অর্থ বুদ্ধিমান]) এবং যা কিছু অর্জন করা উচিত।

আপনি যদি শিল্পে থাকেন এবং বিধানসভায় ঘোরাফেরা করার দায়িত্ব না পান তবে তা করবেন না। অন্যথায়, আপনি যদি শিক্ষার্থী হন বা সাধারণভাবে সময় থাকেন তবে আমি প্রোগ্রামগুলি বিচ্ছিন্ন করতে শেখার সময়টি খুঁজে পেতাম এবং সংকলকটির চেয়ে আরও ভাল সমাধান নিয়ে আসতে পারি কিনা তা দেখতে আমি সময় পেতাম। আমি না পারলে কে পাত্তা দেয়! আমি কীভাবে কম্পাইলার লিখতে হয়েছিল তা শিখেছি এবং যখন আপনি রিলিজ কোডে কোনও বাগের মুখোমুখি হন (কোনও ডিবাগ চিহ্ন নেই) এবং বিচ্ছিন্নতার দিকে তাকিয়ে থাকেন কারণ কেবলমাত্র এটিই আপনি দেখতে পারেন।

উত্তর

অপটিমাইজেশন সম্পর্কে শেখার জন্য এটি খুঁজে পাওয়া সেরা উত্সগুলির মধ্যে একটি।

http://www.agner.org/optimize/

অভিমান

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

যদিও একটি সতর্কতা আছে। আপনি কিছু অপ্টিমাইজ করার সময় এবং পরে বুঝতে পারেন যে সময় নষ্ট হয়েছিল। তবে আপনি কী শিখলেন? আপনি একই ভুল একই পরিস্থিতিতে পুনরাবৃত্তি না শিখেছি।

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

যদি কেউ এমনটি করতে ভালবাসেন, এখনও তা পুরোপুরি উপলব্ধি করতে পারেন নি, তবে এখানে প্রশ্নটি জিজ্ঞাসা করে এবং উত্তরগুলির কাছ থেকে দূরে সরিয়ে / বন্ধ করে দেওয়া হয়েছে যা আপনার চেয়ে ভাল জানেন! এবং কখনই সেই উচ্চ বেতনের প্রোগ্রামারদের একজন হয় না?

একটি চূড়ান্ত চিন্তা। আপনি যদি তাড়াতাড়ি এই কাজটি শুরু করেন, আপনি শীঘ্রই দেখতে পাবেন যে আপনি কোড লেখা শুরু করবেন যা সবচেয়ে খারাপ, কোনও কার্যকারিতা উন্নতি হয়নি কারণ সংকলকটি একইভাবে বা সর্বোত্তমভাবে অনুকূল করেছে, কিছু কার্যকারিতা উন্নতি করেছে কারণ এখন সংকলক এটিকে অপ্টিমাইজ করতে পারে । উভয় ক্ষেত্রেই, এটি অভ্যাস হয়ে গেছে এবং আপনি আগের মতো করে কোড লেখার ক্ষেত্রে কোনও ধীরগতি নেই। কয়েকটি উদাহরণ রয়েছে (আরও অনেকগুলি রয়েছে):

  1. প্রাক-ইনক্রিমেন্টিং যদি না আপনি সত্যিই পোস্ট-ইনক্রিমেন্ট চান
  2. লুপের মধ্যে ধারকটিতে আকার () কল করার চেয়ে ধ্রুবক স্থানীয় আকারের পরিবর্তনশীল ব্যবহার করে ধারকগুলির জন্য লুপগুলি লেখা ing

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


1
সংকলক অনুকূলকরণ সম্পর্কে ভাল পয়েন্ট। তাদের কাছে তারা দুর্দান্ত, তবে এগুলি নিখুঁত থেকে দূরে এবং কিছু লোকেরা যা বিশ্বাস করেন এটির বিপরীতে একটি সাধারণ অপ্টিমাইজেশন খুঁজে পাওয়া সহজ হয় না যা সংকলক করেনি।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআ।।।

3
এটি লক্ষ করা উচিত যে "সমাবেশ পড়তে শেখা" এবং " সমাবেশের সাথে অনুকূলকরণ করতে শেখার" মধ্যে পার্থক্য রয়েছে । দুটি একই জিনিস নয় এবং আপনার উত্তরটি অপ্টিমাইজেশানগুলি বাস্তবায়নের জন্য অ্যাসেম্বলি ব্যবহারের বিষয়ে স্পর্শ করে না । অ্যাসেমবিলি পড়া একটি দরকারী দক্ষতা, কারণ এটি ডিবাগিং এবং এমন জায়গাগুলি চিহ্নিত করতে সহায়তা করতে পারে যেখানে সংকলকটি কিছু ভাল করছে না। তবে এটি অনুকূলিত রুটিনগুলি লেখার জন্য অ্যাসেম্বলি ব্যবহার করা থেকে একেবারেই আলাদা , যার জন্য নির্দিষ্ট সিপিইউয়ের জন্য নির্দেশের সময়সূচী সম্পর্কে গভীর জ্ঞান প্রয়োজন। এবং এটি এমন কিছু যা আপনি কভার করেননি।
নিকল বোলাস

1
এছাড়াও, "আমি কীভাবে লেখার পাশাপাশি কম্পাইলার শিখেছি" না, আপনি করেননি। আপনি দেখেছেন কীভাবে একটি নির্দিষ্ট সিপিইউয়ের জন্য একটি নির্দিষ্ট রুটিন সংকলিত হয়েছিল। কীভাবে অপ্টিমাইজড অ্যাসেম্বলি রুটিনগুলি প্রয়োগ করতে হয় তা শেখার জন্য সংকলকটি কীভাবে একটি রুটিন সংকলন করে তা দেখার চেয়ে বেশি প্রয়োজন। আপনাকে বুঝতে হবে যে সংকলক সেই নির্দিষ্ট সি ++ কোডটি পুনরুত্পাদন করার জন্য সেই অপকডগুলিকে কেন সেই পছন্দটিতে বেছে নিয়েছিল। এবং এর জন্য সিপিইউর অন্তরঙ্গ জ্ঞান, নির্দেশের সময়সূচী, এবং আরও দরকার। এটি সাধারণকরণের জন্য বছরের অভিজ্ঞতা প্রয়োজন; আপনি কেবল কয়েকটি রুটিন ডিকোড করে এটি পাবেন না।
নিকল বোলাস

7
সুতরাং, এ-এর জন্য: কীভাবে সমাবেশ-অপ্টিমাইজড রুটিনগুলি লিখবেন সে সম্পর্কে প্রশ্নের উত্তর দেওয়া হচ্ছে না। বি: বিধানসভা-অনুকূলিত রুটিন লেখার ক্ষেত্রে সংকলককে কীভাবে বীট দেওয়া যায় তা শিখতে কত সহজ তা ভুল উপস্থাপন করা। এবং সি: একটি প্রোগ্রামারকে অ্যালগরিদম-স্তরের অপ্টিমাইজেশনের আগে সমাবেশ-স্তরের অপ্টিমাইজেশানগুলি দেখার জন্য উত্সাহিত করা । এমনকি সেই উচ্চ বেতনভোগী "শিল্পের বিশেষজ্ঞরা" আপনাকে বলবে যে এটি কার্টটিকে ঘোড়ার সামনে রাখছে।
নিকল বোলাস

2
@ সমরসা: কেউই বলেনি যে লোকেরা "বিচ্ছিন্নতা এবং কীভাবে কোডটি অপ্টিমাইজ করতে হয় তা বোঝা উচিত নয়।" এটি কোনও ধর্মীয় বিতর্ক নয়; এটি সাধারণ সত্য বিষয়। লোকেরা কয়েক শতাব্দীকে হাত-অনুকূলকরণের জন্য মানব-শতাব্দীগুলি ব্যয় করেছে কেবল এটির জন্য যে এটি সামগ্রিক পারফরম্যান্সের কিছুই নয়। অ্যালগোরিদমকে কীভাবে অনুকূল করতে হয় তা শেখা একটি অত্যন্ত মূল্যবান দক্ষতা। কীভাবে সমাবেশ পড়তে হয় তা শিখাই একটি আধা মূল্যবান দক্ষতা। সমাবেশের রুটিনগুলি কীভাবে লিখতে হয় তা শেখা একটি দক্ষতা যা কেবল খুব কমই ব্যবহৃত হয়। এবং এই দিনগুলিতে, সেরা অপ্টিমাইজেশন হ্যান্ড অ্যাসেমব্লিং নয়, আরও ভাল ক্যাশে ব্যবহার থেকে আসে।
নিকল বোলাস

22

আপনি যে প্রথম টিপটি পাবেন তা হ'ল - তা করবেন না।

আধুনিক সংকলকরা কোডটি অনুকূলিতকরণে সত্যই সত্যিই দুর্দান্ত এবং আপনি যে কোনও স্ব-রোলড অ্যাসেম্বলি ভাষা লিখতে পারেন তার চেয়ে এটির থেকে আরও ভাল কাজ করার সম্ভাবনা অনেক বেশি।

ব্যতিক্রমটি এমন কোনও নির্দিষ্ট ক্ষেত্রে হবে যেখানে আপনি নির্ধারণ করেছেন যে সংকলকটি অনুকূলকরণের জন্য খারাপ কাজ করছে, তাই এটি দ্বিতীয় টিপ। এখানে কোনও সাধারণ নির্দেশিকা নেই, আপনার নিজের কোডটি জানতে হবে, এটি কী করছে তা জানতে হবে, এটির একটি বিচ্ছিন্নতার মধ্যে ঝাঁপিয়ে নিতে সক্ষম হতে হবে এবং সংকলকটি খারাপ কাজ করছে কিনা তা নির্ধারণ করতে সক্ষম হতে হবে।

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

এবং আপনি এটি মেনে নিতে সন্তুষ্ট হলেও, আপনি এখনও দেখতে পাচ্ছেন যে পরিমাপযোগ্য পারফরম্যান্সের উন্নতি একেবারেই নেই কারণ আপনার মূল বাধা আপনার প্রোগ্রামে কোথাও সম্পূর্ণ আলাদা হতে পারে। সুতরাং এটি আমাকে আবার 1 নম্বরে নিয়ে আসে। না।


15

সাধারণত, শক্তিশালী অপ্টিমাইজেশানটি উচ্চ স্তরের ভাষাগুলিতে কোড সহ মাইক্রো-অপ্টিমাইজেশান ব্যবহার বা নির্ভর করে না। আপনি যদি অনেকগুলি গবেষণামূলক কাগজপত্র পড়ে থাকেন (যেমন আমি করি - বা করার চেষ্টা করি!) আপনি দেখতে পাবেন যে প্রায়শই অ্যালগরিদমে করা উন্নতিগুলি আরও "পরিমাণগত" না হয়ে বিস্তৃত ধারণা, "গুণগত" স্তরে থাকে মাইক্রো-অপ্টিমাইজেশনের স্তর। আমি জোর দিয়ে বলব যে এই দৃষ্টিকোণ থেকে অ্যালগরিদমগুলি দেখে, বা বিদ্যমান সমাধানগুলিকে ভেক্টরাইজিং / সমান্তরাল করে দেখে ক্রম-ক্রমান্বয়ে লাভগুলি পাওয়া যায়।

এটি বলার পরে, আমি সম্প্রতি এটির উপরে ঘটলাম , যা বিশেষত গেম ডেভেলপারদের জন্য x86 এএসএম শেখার দিকে ভাল পথ হতে পারে।


অভিযোজ্য বস্তু

আমার মাথার উপরের অংশ থেকে দুটি উত্স:

অধিকন্তু, গবেষণাপত্রগুলি পড়া জ্ঞানীদের চিন্তার প্রক্রিয়াগুলি অনুসরণ করার একটি দুর্দান্ত উপায় কারণ তারা আরও ভাল পারফরম্যান্সের জন্য অ্যালগরিদমকে অনুকূল করে তোলে। প্রায়শই, লাভগুলি দ্বারা দেখা হয়:

  • সর্বাধিক ব্যয়বহুল ক্রিয়াকলাপগুলির ব্যবহার হ্রাস করা (ডিভি, এসকিউআরটি, ট্রিগ অপস এবং শর্তাদি, প্রাথমিকভাবে);
  • আরও দক্ষ ডেটা স্ট্রাকচার, মেমরি অ্যালাইনমেন্ট এবং কন্ডিশনাল হ্রাসের মাধ্যমে ক্যাশে পারফরম্যান্সের উন্নতি;
  • উন্নত কর্মক্ষমতা জন্য গ্রহণযোগ্য অঞ্চলে আউটপুট মানের হ্রাস;
  • ভেক্টরাইজেশন (সিমডি);
  • সমান্তরালকরণ (থ্রেডিং, জিপিইউতে স্থানান্তরিত কার্যগুলি অন্তর্ভুক্ত করে);
  • এবং অবশ্যই (ক্রমবর্ধমান বিরল) হ্যান্ড-কোডেড অ্যাসেমব্লিয়া। প্রথমে সি / সি ++ অ্যাসেমব্লিকগুলি পরিদর্শন করে দেখতে হবে যে কম্পাইলারটি অবশ্যই নন-অনুকূল পছন্দগুলি তৈরি করছে। 80 এর দশক এবং 90 এর দশকের, আইএমই থেকে আপনি পুরানো কাগজপত্রগুলিতে আরও কিছু পাবেন।

গবেষণা পড়াও আপনাকে জ্ঞানের শিল্পে ফিল্টার হওয়ার জন্য অপেক্ষা না করে আপনার ক্ষেত্রের প্রান্তে রেখে দেয় keeps


আপনি অ্যালগরিদম অপটিমাইজেশন সম্পর্কে কথা বলছেন তবে আপনি এ সম্পর্কে কোনও তথ্য দিচ্ছেন না, যদি আমরা আপনাকে পরামর্শ অনুসরণ করি এবং এর পরিবর্তে আপনি কিছু দিকনির্দেশনা দিতে পারেন?
স্কিথ

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

@ নিকউইগগিল আপনার গবেষণামূলক কাগজগুলির স্বাভাবিক উত্স কী?
kizzx2

3

আমার ধারণা এটি খুব তাড়াতাড়ি হতে পারে।

যাইহোক, এটি বোঝার জন্য গুরুত্বপূর্ণ যে সংকলকটি নিজেই সমাবেশের সমতুল্যের চেয়ে ধীর কোড তৈরি করে না, আপনি সংকলকটির মতো একই সমাবেশ কোডটি লিখে কেবল কোনও কার্যকারিতা পাবেন না।

একটি সূচনার জন্য কমপক্ষে সমাবেশ-মুক্ত অপ্টিমাইজেশনে মনোনিবেশ করুন। ইগর Ostrovsky কয়েক ভাল নিবন্ধ বুনিয়াদি কিছু প্রদর্শন আছে: http://igoro.com/archive/fast-and-slow-if-statements-branch-prediction-in-modern-processors/

মনে রাখবেন যে শাখার ভুল-অনুমান এবং ক্যাশে মিসগুলি হ'ল আপনার প্রাথমিকভাবে অপটিমাইজ করা উচিত, এমনকি যদি আপনাকে কিছু অতিরিক্ত গাণিতিক ক্রিয়াকলাপ করে অর্থ প্রদান করতে হয় তবে এটি একটি অনাকাঙ্ক্ষিত শাখা এড়াতে বা অত্যধিক স্মৃতি থেকে এলোমেলোভাবে পড়ার পক্ষে উপযুক্ত is

এবং অবশ্যই, সবচেয়ে গুরুত্বপূর্ণ, আপনার অ্যালগরিদম প্রথমে অনুকূলিত করুন। একটি দ্রুত অ্যালগরিদমের একটি ধীর প্রয়োগ প্রায় ধীরে ধীরে ধীর অ্যালগরিদমের দ্রুত প্রয়োগের চেয়ে দ্রুত হবে।


2

পাঠ্য বইয়ের জন্য এই বইটি ব্যতিক্রমীভাবে ভাল। তবে এটি বিশেষভাবে অপ্টিমাইজেশনের দিকে এগিয়ে যায় না। X86 প্রসেসরের জন্য সমাবেশের ভাষা, 6th ষ্ঠ সংস্করণ

এটি এমএএসএম ব্যবহার করে সমাবেশের মৌলিক বিষয়গুলি শেখানোর বিষয়ে আরও বেশি। তারপরে বইয়ের শেষের দিকে এটি সি -++ সহ অ্যাসেম্বলিকে কীভাবে ইনলাইন করতে হয় এবং এটি আরও বড় প্রোগ্রামগুলিতে একীভূত করতে পারে।

আমি এটি এখানে রেখেছি কারণ এটির সাথে প্রোগ্রামগুলি কীভাবে অপ্টিমাইজ করা যায় তা শিখার আগে সমাবেশের মৌলিক বিষয়গুলি শিখতে বোঝা যায়।

আমি এই বইটি পছন্দ করি কারণ ইরভাইন আপনাকে মাসম প্রোগ্রাম লেখার জন্য প্রয়োজনীয় সরঞ্জামগুলি কীভাবে ব্যবহার করতে হয় তা শেখায়। তিনি কীভাবে আইডিই (ভিজ্যুয়াল স্টুডিও সি ++) এবং ডিবাগারটি ব্যবহার করবেন সে সম্পর্কে বিশেষভাবে যান। প্রতিটি অধ্যায়ের কয়েকটি সমস্যা সমাধানের জন্য উত্সর্গীকৃত কয়েকটি ভিডিও রয়েছে। এই তথ্যগুলির কিছু তালিকাভুক্ত ওয়েবসাইটে অবাধে উপলব্ধ।


1
"এটির সাথে প্রোগ্রামগুলি কীভাবে অপ্টিমাইজ করা যায় তা শিখার আগে সমাবেশের মৌলিক বিষয়গুলি শিখতে আমাদের বুদ্ধি হয়" - ভাল পরামর্শ।
ম্যাক্সিমাস মিনিমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.