সংক্ষেপিত কোড বনাম সংকলিত কোডের কার্যকারিতা সম্পর্কে আমরা সাধারণ বিবৃতি দিতে পারি?


60

আমি একটি সুপারিশ পৌঁছাতে দুটি প্রযুক্তি তুলনা করছি যার জন্য কোনও একটি সংস্থা ব্যবহার করবে। প্রযুক্তি বি এর কোডটিকে মেশিন কোডে সংকলিত করার সময় প্রযুক্তি এ এর ​​কোডটি ব্যাখ্যা করা হয়। আমার তুলনায় আমি বলছি যে টেক বি সাধারণভাবে আরও ভাল পারফরম্যান্স পাবে কারণ এতে ব্যাখ্যা প্রক্রিয়াটির অতিরিক্ত ওভারহেড নেই। আমি আরও বলেছি যেহেতু একটি প্রোগ্রামটি বিভিন্ন উপায়ে লেখা যেতে পারে এটি এখনও টেক এ তে লেখা একটি প্রোগ্রাম প্রযুক্তি বিতে লেখা একটিকে ছাড়িয়ে যেতে পারে is

আমি যখন এই প্রতিবেদনটি পর্যালোচনার জন্য জমা দিয়েছিলাম, তখন পর্যালোচক বলেছিলেন যে সাধারণভাবে ব্যাখ্যা প্রক্রিয়াটির ওভারহেড এত বড় হবে যে আমরা এই সিদ্ধান্তে পৌঁছাতে পারি যে টেক বি এর অভিনয় আরও ভাল হবে।

সুতরাং আমার প্রশ্নটি কি আমরা কখনই সংকলিত / ব্যাখ্যাযুক্ত প্রযুক্তির কর্মক্ষমতা সম্পর্কে কিছু বলতে পারি? যদি আমরা বলতে পারি যে সংকলিতটি সাধারণত দ্রুত হয় তবে ব্যাখ্যা করা হয়, আমি কীভাবে আমার বক্তব্যটির পর্যালোচককে বোঝাতে পারি?


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

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

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

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

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

উত্তর:


111

না।

সাধারণভাবে, একটি ভাষা বাস্তবায়নের কর্মক্ষমতা মূলত অর্থ, সংস্থান, জনশক্তি, গবেষণা, প্রকৌশল এবং এতে ব্যয়িত বিকাশের পরিমাণের উপর নির্ভর করে।

এবং বিশেষত, একটি নির্দিষ্ট প্রোগ্রামের পারফরম্যান্সটি মূলত তার অ্যালগরিদমে যে পরিমাণ চিন্তাভাবনা করা হয় তার উপর নির্ভর করে।

সেখানে খুব দ্রুত দোভাষী রয়েছে এবং কিছু সংকলক খুব ধীর কোড জেনারেট করে ।

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


12
যতটা আমি বলতে পারেন আপনার নিজের পূর্বে উত্তর একটি লিঙ্ক (সম্ভবত একটি ডুপ্লিকেট) প্রশ্ন এসব ব্যাপারে অনেক বেশি এই এক ভাল কভার
মশা

11
পারফরম্যান্স সম্পর্কে সাধারণ সিদ্ধান্ত নেওয়া যদি অসম্ভব এবং আমরা এ তে একটি নির্দিষ্ট প্রোগ্রাম লিখতে পারি যা বি তে অনুরূপ প্রোগ্রামটি তৈরি করে, তবে আমরা বিতে এমন একটি প্রোগ্রামও লিখতে পারি যা এ-তে লেখা একটিকে ছাপিয়ে যায় আমরা এ সম্পর্কে সত্যিকার অর্থে কোনও সিদ্ধান্তে পৌঁছাতে পারি না ভাষার গতি কি তখন? যাইহোক ফোরথ আকর্ষণীয় দেখায়, আমাকে এটি সম্পর্কে আরও পরে পড়তে হবে।
এপিকসাম

36
@ এপিকসাম: সঠিক। "একটি ভাষার গতি" সম্পর্কে ধারণাটি মূলত অ-সংবেদনশীল।
Jörg ডব্লু মিটাগ

23
সাধারণভাবে: নির্দিষ্ট হতে হবে।
igouy

19
আমি "... এবং কিছু খুব ধীর সংকলক" দ্বারা ধরে নিয়েছি আপনি তাদের কোড সংকলনের গতি নয়, তারা উত্পন্ন কোডটি বোঝাতে চেয়েছিলেন।
মার্টিনো

81

সাধারণীকরণ এবং নির্দিষ্ট পরিস্থিতি আক্ষরিকভাবে বিপরীত।

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

একবার আপনি কোনও কংক্রিটের দৃশ্যে কিছু প্রয়োগ করলে, এটি আর সাধারণীকরণ করা হয় না । সুতরাং আপনি যদি ব্যাখ্যা করতে পারেন যে ভাষাগুলির ভাষাগুলি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে যুক্ত হয় , আপনি এখনও আপনার বক্তব্য রাখছেন না। আপনার পর্যালোচক সাধারণীকরণের বিষয়ে চিন্তা করে না। আপনি দুটি অত্যন্ত নির্দিষ্ট প্রযুক্তির বিশ্লেষণ করছেন। আক্ষরিকভাবে এটি সাধারণীকরণের বিপরীত।


3
এটি প্রশ্নের শিরোনামের বিপরীতে প্রশ্ন পাঠের সর্বোত্তম উত্তর।
ডেভিড মোল

37

থাম্বের নিয়ম হিসাবে, দোভাষীর হোস্ট ভাষায় প্রোগ্রামটি লেখার চেয়ে একটি দোভাষী প্রোগ্রামটি প্রায় 2x – 10x ধীর হয়, আরও গতিশীল ভাষার জন্য দোভাষীরা ধীর হয়। এটি কারণ কারণ ব্যাখ্যা করা প্রোগ্রামটি সমস্ত আসল কাজ করতে হয়, তবে অতিরিক্তভাবে ব্যাখ্যার ওভারহেড থাকে।

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

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

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

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

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


10
আপনি যদি মনে করেন যে "কম্পিউটার ল্যাঙ্গুয়েজ বেঞ্চমার্কস গেমের সাইটের একটি বিভ্রান্তিমূলক কাঠামো আছে" তবে লোকেরা শীর্ষ-স্তর থেকে অনুসন্ধান করতে পারে এমন প্রত্যাশার চেয়ে নির্দিষ্ট পৃষ্ঠায় একটি ইউআরএল দিন যা আপনার পয়েন্টটিকে সমর্থন করে! দেখান; শুধু বলুন না।
ইগুই

8
আপনি যদি মনে করেন "সাইটের সবচেয়ে গুরুত্বপূর্ণ অংশটি মানদণ্ডের ফলাফল নয়, তবে অর্থবোধক মাপদণ্ডটি কতটা কঠিন" তা নিয়ে আলোচনাগুলি সেই পৃষ্ঠাগুলিতে ইউআরএল দেয়। দেখান; শুধু বলুন না।
igouy

4
আপনার উত্তরটি যারা পড়েছেন তাদের সুবিধার্থে এটি হবে। (আমি কেবল একজন যিনি বেঞ্চমার্ক গেমটি পরিচালনা করেন)।
igouy

2
@ উত্তরে কে-নিউক্লিওটাইড উদাহরণের সাথে সংযোগ স্থাপন করা এটিকে আরও পঠনযোগ্য এবং নোটটিকে আরও দরকারী করে তুলবে, যেমন আলোচনার যোগসূত্র তৈরি করবে (পুরো সাইটটি পড়া না করেই, আপনি কী আলোচনা করছেন তা আমার কাছে স্পষ্ট নয়)।
ডেভিড মোল

1
পৃথিবীতে আপনি কোথা থেকে 2-10X পেয়েছেন? অনুপাতটি সম্পূর্ণ নির্ভর করে যে প্রতিটি বাইটকোডের জন্য হ্যান্ডলারটি আনতে এবং প্রেরণ করতে কত সময় লাগে তার বিপরীতে প্রতিটি হ্যান্ডলার কার্যকর করতে কত সময় নেয় এবং 10x কেবল তখনই সম্ভব হবে যদি আনয়নচক্রটি হ্যান্ডলার হিসাবে 9x সময় নেয়, যা বর্বরভাবে improbably। হ্যান্ডলারের দ্বারা সাধারণত সম্পাদন কার্যকর হয়। এবং আনতে চক্রটি তুচ্ছভাবে তুচ্ছ হতে পারে।
ব্যবহারকারী 207421

18

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

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


12

এটি একটি প্রযুক্তিগত প্রশ্ন এবং আপনি ইতিমধ্যে অনেক ভাল প্রযুক্তিগত উত্তর পেয়েছেন, তবে আমি আপনার পরিস্থিতির কিছুটা ভিন্ন দিক উল্লেখ করতে চাই: আপনি কেবল "প্রযুক্তি এ বা প্রযুক্তি বি" এর মতো কোনও সিদ্ধান্তকে বিশুদ্ধরূপে ভিত্তি করতে পারবেন না এই সত্যটি that প্রযুক্তিগত এবং / বা পারফরম্যান্স কারণে।

এর মতো কোনও কিছুর প্রযুক্তিগত দিকগুলি এ এবং বি এর মধ্যকার সিদ্ধান্তের একটি সামান্য অংশ মাত্র কয়েক হাজার অন্যান্য বিষয় মনে রাখা উচিত:

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

আপনি দেখতে পাচ্ছেন যে, এই জাতীয় সিদ্ধান্ত নেওয়ার সময় বিবেচনার জন্য অনেকগুলি জিনিস রয়েছে।

আমি জানি এটি বিশেষত আপনার প্রশ্নের উত্তর দেয় না, তবে আমি মনে করি এটি আপনার পরিস্থিতি এবং এই জাতীয় সিদ্ধান্তের বিশদ সম্পর্কে আরও একটি বৃহত চিত্রের দৃষ্টিভঙ্গি নিয়ে আসে।


10

আংশিক মূল্যায়ন হ'ল দোভাষী এবং সংকলকগুলির সাথে সম্পর্কিত একটি ধারণাগত কাঠামো।

সংক্ষেপিত কোড বনাম সংকলিত কোডের কার্যকারিতা সম্পর্কে আমরা সাধারণ বিবৃতি দিতে পারি?

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

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

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

এসবিসিএল হ'ল একটি কমন লিস্প "সংকলক" যা প্রতিটি আরপিএল ইন্টারঅ্যাকশন (এবং কল evalইত্যাদি ...) কে মেশিন কোডে গতিশীলভাবে অনুবাদ করে । সুতরাং আপনি এটি দোভাষী মনে করেন। ব্রাউজারগুলিতে বেশিরভাগ জাভাস্ক্রিপ্ট বাস্তবায়ন (যেমন v8 ) জেআইটি সংকলন কৌশল ব্যবহার করে।

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

কোনও প্রয়োগকারীর মতো বেশিরভাগ "সংকলক" বা "দোভাষী" ব্যবহার করে স্বাধীনভাবে দ্রুত বা ধীর হতে পারে।

কিছু ভাষার বৈশিষ্ট্য ব্যাখ্যা করার পদ্ধতির পক্ষে (এবং কেবলমাত্র পুরো প্রোগ্রাম বিশ্লেষণের মাধ্যমে দক্ষতার সাথে সংকলন করা যায় )।

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

পাইথন এবং এটি সম্পর্কিত এই সম্পর্কিত প্রশ্নটিও দেখুন


7

কোডের মতো ক্ষেত্রে A = A + Bএটি এক বা দুটি মেশিনের নির্দেশাবলীতে সংকলন করতে পারে, প্রত্যেকে একটি নির্দিষ্ট সংখ্যক চক্র নিয়ে থাকে। কোনও দোভাষী কোনও সাধারণ কারণে সেই সংখ্যাটিতে একই কাজ করতে পারবেন না।

দোভাষী তার নিজস্ব একটি নির্দেশিকা সেটও চালায় (তাদের বাইট-কোড, পি-কোডস, মধ্যবর্তী ভাষা, যাই হোক না কেন) বলুন। প্রতিবার এটি ADD এর মতো বাইট-কোড দেখে, এটি এটিকে কোনওভাবে সন্ধান করতে হবে এবং সংযোজনকারী কোডটিতে শাখা করতে হবে।

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

অন্য দিকে...

কোডের মতো callSomeFunction( ... some args ...), কোডটি প্রবেশ করা এবং এটি ছেড়ে যাওয়ার মধ্যে কতগুলি চক্র ব্যয় হয়? এটি ভিতরে কী ঘটে তার উপর নির্ভর করে callSomeFunction। এটি কয়েকটি হতে পারে এবং এটি ট্রিলিয়নও হতে পারে, যদি callSomeFunctionনিজেই সংকলিত হয়। যদি এটি অনেক বেশি হয় তবে সেই লাইনের কোডের ব্যাখ্যার ব্যয় নিয়ে বিতর্ক করার কোনও অর্থ নেই - অর্থ অন্য কোথাও।

মনে রাখবেন ব্যাখ্যাযুক্ত ভাষার নিজস্ব মূল্য রয়েছে যেমন তাদের সংকলন করার দরকার নেই। (বাইট কোডগুলিতে পৃষ্ঠের সিনট্যাক্সের "সংকলন" তুচ্ছ সময় নেয় R উদাহরণস্বরূপ আর বা ম্যাটল্যাব নিন))

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

লিস্পে, আপনি (+ A B)এ এবং বি যুক্ত করতে লিখতে পারেন , তবে একবার এটি লেখা হয়ে গেলে আপনার কেবল এটি চালানো বা না চালানোর পছন্দ থাকে। আপনি (eval (list '+ 'A 'B))যা লিখতে পারেন যা প্রোগ্রামটি তৈরি করে এবং তারপরে এটি কার্যকর করে। এটি অন্যরকম কিছু নির্মাণ করতে পারে।

প্রোগ্রামটির বিষয় হ'ল আরেকটি প্রোগ্রাম । এটি ব্যাখ্যাযোগ্য ভাষায় লেখার পক্ষে সহজ (যদিও জার্গ উল্লেখ করেছেন, লিস্পের নতুন সংস্করণগুলি রয়েছে, যদিও তাদের রয়েছে eval, ফ্লাই-অন-ফ্লাই সংকলন, সুতরাং তাদের ব্যাখ্যা দেওয়ার গতি জরিমানা নেই)।


1
আমি এটি আকর্ষণীয় মনে করি যে আপনি বলেছিলেন যে ব্যাখ্যামূলক ভাষায় মেটা-স্তরের প্রোগ্রামগুলি লেখা সহজ, তবুও লিস্পকে উদাহরণ হিসাবে ব্যবহার করুন, যেখানে বেশিরভাগ বাস্তবায়ন সংকলিত হয়।
Jörg ডব্লু মিটাগ

1
@ জার্গডব্লিউমিত্যাগ: অবশ্যই, তবে তাদের সকলের রয়েছে evalএবং applyকার্যকারিতা, যা দোভাষী।
মাইক ডুনলাভে

2
আমি নিশ্চিত যে কমপক্ষে এসবিসিএল-তে evalব্যাখ্যা করা হয়নি। এবং হয় না apply। অবশ্যই বাস্তবায়ন রয়েছে যার মধ্যে দোভাষী রয়েছে, তবে এসবিসিএল তা করে না।
Jörg ডব্লু মিটাগ

1
ইন্টারপ্রেটার রানটাইম এবং স্কোয়াশ বাকী পুনরাবৃত্তিতে লুপের শর্তটি অনুকূল করে তুলতে পারে। সংকলিত প্রোগ্রামগুলিতে এটি খুব কমই সম্ভব। বিশেষত, ওরাকলের হটস্পট ঠিক তা করে।
বেসিলিভগুলি

2
@ JörgWMittag: অবশ্যই evalব্যাখ্যা করা হয় না ইডি । এটি একটি ব্যাখ্যা এর
মাইক ডুনলাভে

5

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

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

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

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


5

আপনার অনুমানটি সুপ্রতিষ্ঠিত, যদিও এটি একটি অনুমান।

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

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

তবে আমার পোস্টের বিষয়টি হ'ল আইটি বিশেষজ্ঞ হিসাবে আপনাকে প্রায়শই কীভাবে কাজ করা উচিত তার সাধারণ জ্ঞানের উপর ভিত্তি করে স্ন্যাপ সিদ্ধান্ত নেওয়ার জন্য ডাকা হবে। একটি নির্দিষ্ট পরীক্ষা করা আপনাকে আরও সঠিক উত্তর পেতে পারে তবে এটির জন্য আরও অনেক বেশি ব্যয় হবে এবং এটি আপনাকে প্রথমে পাবেন না।

তবে সময়ে সময়ে আপনি ধরা পড়ে যান। এটা আমার সাথে হয়েছে। আপনি একটি ভাল ধারণা তৈরি করেন এবং তারপরে আপনি দেখতে পান যে আপনি বিশ্বের বোকামিগুলি বিবেচনায় নিতে ব্যর্থ হয়েছেন।

তবে আমি আমার প্রিয় দিলবার্ট কার্টুন পাশাপাশি সর্বদা ব্যাখ্যা করতে পারি না। স্মার্ট-গাধা হওয়ার বিপদগুলির চেয়ে ভাল আর কিছুই আর দেখায় না।

বিকল্প পাঠ

টিএল; ডিআর: আপনার ঠিক হওয়া উচিত, তবে কেবল আসল বিশ্বটি পরীক্ষা করুন।


3

যদি আপনি কিছুটা বিদেশী কিছু না ব্যবহার করেন তবে আপনার সমস্যাটি কোনও অনুবাদিত ভাষা এ এবং সংকলিত ভাষা বি সম্পর্কে সম্পাদন সম্পর্কিত হবে না

কারণ আপনি / আপনার দল যদি A এবং B না চিনেন এবং বি এর চেয়ে A তে আরও ভাল কোড লিখতে পারেন তবে আপনি বি এর চেয়ে A তে আরও ভাল পারফরম্যান্স অর্জন করতে পারেন আপনার যদি লোকেরা এক ভাষাতেই অভিজ্ঞ হয় এবং ভাষা / গ্রন্থাগারগুলি করতে পারে আপনার প্রয়োজন কাজ, এটি আটকে।

বিভিন্ন ভাষায় রেগেক্স সম্পর্কে একটি লিঙ্ক এখানে; আপনি দেখতে পাবেন যে কিছু সংকলন করা হয়েছে বা না থাকলেও রেজেক্স আরও কিছু ভাষায় আরও ভালভাবে প্রয়োগ করা হয়েছে: http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=regexdna


সমস্যাটি হ'ল টিমটি এ এবং বি উভয়ই ব্যবহার করতে পারে এবং আমি যখন ইনপুটটির জন্য জিজ্ঞাসা করি তখন তারা কোনওটির জন্য কোনও অগ্রাধিকার নির্দেশ করে না।
এপিকসাম

@ এপিকসাম তাদের অতীতের প্রকল্পগুলি সম্পর্কে কি?
ওয়ালফ্রাট

1
এ এবং বি উভয়ই ব্যবহৃত হয়েছে। তবে তারা সমস্ত প্রকল্পের জন্য 1 টি প্রযুক্তি ব্যবহার করতে যেতে চান। উভয় প্রযুক্তির পারফরম্যান্স বর্তমান প্রকল্পগুলির জন্য যথেষ্ট ভাল। তবে ভবিষ্যতের সম্ভাব্য প্রকল্পগুলির দিকে তাকালে তাদের মধ্যে একটির উচ্চতর পারফরম্যান্স বিবেচনা করা উচিত।
এপিকসাম

3
আপনার প্রকল্পগুলিতে আপনাকে সহায়তার জন্য ভাষা ও গ্রন্থাগার / ফ্রেমওয়ার্কের আশেপাশের সম্প্রদায়ের জন্য অ্যাপিকসাম আরও ভাল চেহারা দেখুন।
ওয়ালফ্রাট

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

1

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

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

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


0

একবার বড় সিদ্ধান্তের ন্যায্যতা জানাতে আমাকে একই ধরণের ঝাড়ফুঁক করা বিবৃতি দিতে হয়েছিল।

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

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

এ সময়ে A এবং B এর মধ্যে পার্থক্য (বা এর অভাব) এতটাই স্পষ্ট হওয়া উচিত যে আপনাকে কেবল এটি উপস্থাপন করতে হবে। সুতরাং ফলাফলগুলি স্পষ্টভাবে ফর্ম্যাট করুন, সম্ভব হলে ডায়াগ্রামের সাথে, সমস্ত অনুমানকে উল্লেখ করে এবং ব্যবহৃত সমস্ত ডেটা সংজ্ঞায়িত করুন।


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

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

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

0

আমি যুক্তি দিয়ে বলব যে কোনও গতিশীল ভাষার স্থিতিশীল সংকলিতগুলির চেয়ে একটি সুবিধা রয়েছে: "রানটাইম অপ্টিমাইজেশন"

এটি জাভা সি ++ এর চেয়ে দ্রুততর হতে পারে তার অন্যতম কারণ

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

দ্রষ্টব্য: জাভা হ'ল একটি গতিযুক্ত ভাষা নয়। তবে রানটাইমের তথ্য দিয়ে আপনি কী গতি বাড়িয়ে তুলতে পারবেন এটি একটি দুর্দান্ত উদাহরণ


-3

... আমি আরও বলেছি যেহেতু একটি প্রোগ্রাম বিভিন্ন উপায়ে লেখা যেতে পারে তখনও টেক এ-তে লেখা একটি প্রোগ্রাম প্রযুক্তি বিতে লেখা একটিকে ছাড়িয়ে যেতে পারে is

আমি যখন এই প্রতিবেদনটি পর্যালোচনার জন্য জমা দিয়েছিলাম, তখন পর্যালোচক বলেছিলেন যে সাধারণভাবে ব্যাখ্যা প্রক্রিয়াটির ওভারহেড এত বড় হবে যে আমরা এই সিদ্ধান্তে পৌঁছাতে পারি যে টেক বি এর অভিনয় আরও ভাল হবে। ...

এটি আমার পদ্ধতির হবে:

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

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

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


2
সম্পূর্ণ ভুল। সংজ্ঞাদাতারা কীভাবে কাজ করে বনাম কীভাবে কাজ করে তা আপনি বুঝতে পারেন না।
rghome
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.