ফ্লপ-গণনা দ্বারা অ্যালগরিদমিক বিশ্লেষণ কি অচল?


43

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

এখন এটি বলা ফ্যাশনেবল যে "ফ্লপগুলি নিখরচায়" কারণ ক্যাশে নেই এমন কিছু আনতে মেমরির বিলম্বিতা ফ্লপের ব্যয়ের চেয়ে অনেক বেশি। তবে আমরা এখনও কমপক্ষে সংখ্যার বিশ্লেষণ কোর্সে শিক্ষার্থীদের ফ্লপ গণনা করতে শেখাচ্ছি। আমরা কি তাদের পরিবর্তে মেমরি অ্যাক্সেসগুলি গণনা করতে শেখাচ্ছি? আমাদের কি নতুন পাঠ্যপুস্তক লেখার দরকার আছে? বা মেমরি অ্যাক্সেস খুব বেশি সময় ব্যয় করার জন্য মেশিন-নির্দিষ্ট? দীর্ঘমেয়াদী প্রবণতা ফ্লপ বা মেমরি অ্যাক্সেস বাধা কি না তা বিবেচনার ক্ষেত্রে কী হতে চলেছে?

দ্রষ্টব্য: নীচের উত্তরগুলির মধ্যে কয়েকটি পৃথক প্রশ্নের উত্তর দিচ্ছে বলে মনে হচ্ছে "কয়েকটি ফ্লপ বাঁচানোর জন্য বা ক্যাশের কার্যকারিতা উন্নত করার জন্য কি আমি আমার প্রয়োগটি পুনরায় লিখতে হবে?" তবে আমি যা জিজ্ঞাসা করছি তার চেয়ে আরও বেশি " গাণিতিক ক্রিয়াকলাপ বা স্মৃতি অ্যাক্সেসের ক্ষেত্রে আলগোরিদিম জটিলতা অনুমান করা কি আরও কার্যকর ?"


1
> "গাণিতিক ক্রিয়াকলাপ বা মেমরি অ্যাক্সেসের ক্ষেত্রে আলগোরিদিম জটিলতা অনুমান করা আরও কার্যকর কি?" । ব্যবহারিক দৃষ্টিকোণ থেকে, এম্বেড করা সিস্টেমগুলি মেমরি ব্যান্ডউইথের চেয়ে এফপিইউ গতি দ্বারা সীমাবদ্ধ। সুতরাং, এমনকি যদি ফ্লপ গণনা এইচপিসি স্ট্যান্ডার্ড অনুসারে অপ্রচলিত বলে মনে করা হয়, তবে এটি এখনও অন্য সম্প্রদায়ের ব্যবহারিকভাবে ব্যবহারযোগ্য।
দামিয়েন

উত্তর:


31

আমি মনে করি (প্রথম অর্ডার) সঠিক কাজটি করা হল অ্যালগরিদমে প্রয়োজনীয় ফ্ল্যাপের বাইটের অনুপাতের দিকে নজর দেওয়া, যা আমি । প্রসেসরের সর্বাধিক ফ্লপ হার এবং সর্বাধিক ব্যান্ডউইথ হতে চলুন Let Let যদি , তবে অ্যালগরিদম ব্যান্ডউইথ সীমিত হবে। যদি , অ্যালগরিদম ফ্লপ সীমাবদ্ধ।এফ এম একটি এক্স বি এম একটি এক্স এফ এম একটি এক্সβFmaxBmaxবিএমএকটিএক্সβ>এফএমএকটিএক্সFmaxβ>BmaxBmaxβ>Fmax

আমি মনে করি মেমরি অ্যাক্সেসগুলি গণনা বাধ্যতামূলক, তবে আমাদের আরও চিন্তা করা উচিত:

  • কত লোকাল মেমোরি দরকার

  • আমাদের কতটুকু সম্মতি আছে

তারপরে আপনি আধুনিক হার্ডওয়্যারের জন্য অ্যালগরিদম বিশ্লেষণ শুরু করতে পারেন।


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

2
ডেভিড আরও 8 বছর আগে করছেন ।
ম্যাট নিপলি 0

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

3
মুলতটি হ'ল মেশিনটি একক সংখ্যায় কমে গেছে, পিক ফ্লপগুলির অনুপাত পিক ব্যান্ডউইদথের সাথে, যেমন অ্যালগোরিদম রয়েছে। এটি এটি হিসাবে হিসাবে সহজ। একটি গণনামূলক মডেল ব্যতীত যে কোনও জটিলতার অনুমান অকেজো এবং এটি হ'ল সরল বাস্তববাদী।
ম্যাট নিপলি

1
আমি মনে করি আপনি সমস্যার ভুল বোঝেন। আমাদের ইতিমধ্যে অপটিক্যাল ট্রান্সপোর্ট রয়েছে যা বড় বোঝা বহন করতে পারে। সমস্যাটি একটি চিপে পেয়ে যাচ্ছে। আপনার কেবলমাত্র অনেকগুলি তার এবং শীর্ষ ক্লক রেট রয়েছে। অপটিক্যাল পরিবহন কেবল একটি অপটিকাল চিপে এই সমস্যা উপশম করতে পারে।
ম্যাট নিপলে

22

একজনকে কেন "বিজয়ী" হতে হবে তা আমি দেখছি না; এটি একটি শূন্য-সমষ্টি খেলা নয়, যেখানে ফ্লপ গণনা এবং মেমরি অ্যাক্সেসটিকে অন্যটিকে ডুবিয়ে রাখতে হয়। আপনি উভয়ই শিখিয়ে দিতে পারেন এবং আমি মনে করি তাদের উভয়ের ব্যবহার রয়েছে। সর্বোপরি, এটি বলা শক্ত যে আপনার মেমরির অ্যাক্সেস সহ অ্যালগরিদম অগত্যা আপনার অ্যালগরিদমকে অ্যাক্সেসের চেয়ে দ্রুত হতে চলেছে । এটি সমস্ত বিভিন্ন অংশের আপেক্ষিক ব্যয়ের উপর নির্ভর করে (এই বিশ্লেষণে আমরা যে সবসময় উপেক্ষা করি!)।( এন ) ( এন লগ এন ) ( এন 2 )O(N4)O(N)O(NlogN)O(N2)

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


7
একটি অ্যালগরিদম যা ডেটা অ্যাক্সেস সম্পাদন করে ? :)( এন 2 )O(NlogN)O(N2)
Andreas Klöckner

2
কেন না? যদি কেবল ভাসমান পয়েন্ট অপটিকে বোঝায়, সম্ভবত অতিরিক্ত সংখ্যক পূর্ণসংখ্যক অপস রয়েছে যা ডেটা অ্যাক্সেসের কারণ হতে পারে :)( এন 2 )O(NlogN)O(N2)
কিন

9

অন্যরা যেমন উল্লেখ করেছে, উত্তর অবশ্যই বাধা দেয় না তার উপর নির্ভর করে সিপিইউ বা মেমরি ব্যান্ডউইথ। অনেকগুলি অ্যালগরিদমের জন্য যা কিছু নির্বিচারে আকারের ডেটাসেটে কাজ করে, সাধারণত বাটনি হ'ল মেমরি ব্যান্ডউইথ হয় কারণ ডেটাসেটটি সিপিইউ ক্যাশে ফিট করে না।

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

বিডিডিগুলি বিশ্লেষণ করার সময় নোথ টিএওসিপি -র ভলিউম 4 এ-তে গিগামেম শব্দটি ব্যবহার করেছেন । আমি নিশ্চিত না যে সে এটি পূর্ববর্তী খণ্ডে ব্যবহার করেছে কিনা। তিনি ২০১০ সালে তার বার্ষিক ক্রিসমাস ট্রি লেকচারে সময়ের পরীক্ষা দাঁড়ানো সম্পর্কে উপরোক্ত মন্তব্যটি করেছিলেন।

মজার বিষয় হচ্ছে, আপনি এটি করছেন ভুল করে দেখায় যে মেমরি অপারেশনগুলির উপর ভিত্তি করে পারফরম্যান্স বিশ্লেষণ করাও সবসময় সোজা হয় না কারণ ভিএম চাপের মতো উপাদান রয়েছে যা যদি ডেটা একবারে শারীরিক র‍্যামের সাথে ফিট না করে তবে কার্যকর হয় play


8

আপনি কীভাবে অ্যালগরিদমের ব্যয় নির্ধারণ করবেন তার উপর নির্ভর করে আপনি কোন বৈজ্ঞানিক কম্পিউটিংয়ের "স্তর" ব্যবহার করেন এবং কোন (সংকীর্ণ বা বিস্তৃত) শ্রেণীর সমস্যাগুলি আপনি বিবেচনা করেন।

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

অন্যদিকে, সমস্যার বৃহত্তর শ্রেণীর, প্রকৃত কম্পিউটিং সম্পর্কে আপনি যত কম অনুমান করতে পারবেন (যেমন, বলুন, আপনি জানেন না যে আপনার সিজি বাস্তবায়নের ইনপুট ম্যাট্রিকগুলি সত্যই কতটা স্পার হবে)। আপনার প্রোগ্রামটি যে বিস্তৃত শ্রেণীর মেশিনে চালিত হওয়ার কথা, ততই আপনি ক্যাশে আর্কিটেকচারের বিষয়ে অনুমান করতে পারবেন না।

তদ্ব্যতীত, বৈজ্ঞানিক কম্পিউটিংয়ের একটি উচ্চ স্তরে, এটি সমস্যার কাঠামো পরিবর্তন করার জন্য আরও প্রাসঙ্গিক হতে পারে। উদাহরণস্বরূপ, আপনি যদি সমীকরণের লিনিয়ার সিস্টেমের জন্য ভাল পূর্ব শর্তের সন্ধানে সময় ব্যয় করেন তবে এই ধরণের অপ্টিমাইজেশন সাধারণত কোনও নিম্ন-স্তরের অপ্টিমাইজেশনকে বীট করে, কারণ পুনরাবৃত্তির সংখ্যা মারাত্মকভাবে হ্রাস পেয়েছে।

সমাপ্তি হিসাবে, ক্যাশে অপ্টিমাইজেশন কেবল তখনই কার্যকর যখন সামন্ততত্ত্ব এবং এফএলপিগুলির সংশ্লেষসংক্রান্ত সংখ্যা হ্রাস দ্বারা অনুকূলিতকরণের কিছুই না থাকে।

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


"সমান্তরালতা এবং এফএলপি সংখ্যার asympotic নম্বর হ্রাস দ্বারা অনুকূলকরণের কিছুই বাকি না থাকলে কেবল ক্যাশে অপ্টিমাইজেশন কার্যকর হয়"। আমি একমত নই আপনি যদি সংখ্যার বড় গুচ্ছের একটি বৃহত প্রকাশটি গণনা করতে চান তবে প্রতিটি সংখ্যার জন্য সমস্ত পদক্ষেপের চেয়ে সমস্ত সংখ্যার সাথে একবারে একটি পদক্ষেপ করা ভাল। উভয়েরই সমান সংখ্যক এফএলপিএস রয়েছে তবে মেমরি অ্যাক্সেসের মধ্যে একটি ভাল। বোনাস যদি আপনি ক্যাশে ফিট করার জন্য গুচ্ছের আকার নির্বাচন করেন (বা সংকলকটি এটি আপনার জন্য করে)। পাইথনে নিউমেক্সপ্রিত এটি করে: github.com/pydata/numexpr
ডেভিডম

6

আমি সবসময় ফ্লপ, মেমরি অ্যাক্সেসগুলি বা আপনার কাছে যা কিছু আছে তা গণনা সম্পর্কেও ভাবতে অস্বীকার করেছি। এটি ১৯60০ এর দশকের একটি ধারণা যখন আপনি যা করেছিলেন তা যথেষ্ট দেওয়া হয়েছিল এবং কেবল কীভাবে আপনি এটি করেছিলেন তা অ্যালগরিদমিক অপ্টিমাইজেশনের উপর নির্ভর করে। জ্যাকবীর পুনরাবৃত্তি গৌসিয়ান বিলোপ ব্যবহার করে একটি অভিন্ন জাইজ জাল উপর সীমাবদ্ধ উপাদান সমস্যা সমাধানের কথা ভাবুন।

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


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

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

1
আমি মনে করি আপনি প্রথমে যা পেয়ে যাচ্ছিলেন তা আমি প্রথমে ভুল বুঝেছিলাম, তবে আমি এখনও আপনার বক্তব্যের সাথে একমত নই। "আউটার অ্যালগরিদম" এখনও অ্যাসিপোটোটিক জটিলতার কথা মাথায় রেখে ডিজাইন করা যেতে পারে (এবং আমি তর্ক করব, উচিত)। অবশ্যই আপনি দাবী করবেন না যে একটি চতুর্ভুজীয় অ্যালগরিদম থেকে নিকট-লিনিয়ার অ্যালগরিদম থেকে একটি ড্রপ রানটাইম 10% হ্রাস পেতে পারে; তবুও, ফ্লপ এবং / বা মেমরি-অপের মাধ্যমে অ্যাসিপটোটিক জটিলতার পরিমাণ কীভাবে আরও বাড়ানো যায়?
জ্যাক পলসন

7
আমি মনে করি এই "আপনার হাত বাড়িয়ে দিন" অ্যালগরিদমগুলির কাছে পৌঁছানোর পদ্ধতিটি বোকা। আপনাকে কেবল প্রথম-অর্ডারের ব্যয়গুলি দেখে, এবং মডেলটি সহজ করে যাতে এটি ট্র্যাকটেবল হতে পারে, তবে আপনাকে এমজি বা কোলেস্কির মতো এমন কিছু বিশ্লেষণ করতে পারবেন না কারণ এটি খুব জটিল flat
ম্যাট নিপলি

1
ঠিক আছে, তবে হাইপারথ্রেড প্রসেসর, ক্যাশে, স্লো র‌্যাম, মাল্টিস্কালার প্রসেসর এবং স্বয়ংক্রিয় ভেক্টরাইজেশন দ্বারা সৃষ্ট বিচ্ছিন্নতার কয়েকটি স্তরের পিছনে যখন আপনার গণনা করা প্রতিটি এফএলওপি লুকিয়ে থাকে তখন এমজি বা কোলেস্কি বিশ্লেষণ করার অর্থ কী? আমি যে বিষয়টিটি তৈরি করছি তা হ'ল 5-10 এর একটি ফ্যাক্টরের মধ্যে আপনি নিজের অ্যালগোরিদমের রান-সময়কে সময় না দিয়ে আরও পূর্বাভাস দিতে পারবেন না। লোকেরা এই এফএলওপি গণনা শুরু করার সময় 50 এবং 60 এর দশকে এটি সম্পূর্ণ আলাদা ছিল।
ওল্ফগ্যাং ব্যাঙ্গার্থ

1

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

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


-1

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

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


এটি সত্য, তবে আপনি যেমনটি বলেছেন, প্রশ্নের উত্তর দেয় না। এটি একটি ভিন্ন বিষয়ে।
ডেভিড কেচসন

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