দ্রুততম কার্যকরী ভাষা


18

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

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


18
ভাষাগুলি দ্রুত বা ধীর হয় না, বাস্তবায়ন হয়।
স্টারব্লিউ

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

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

3
@ আইজিউই "ভাষার প্রয়োগগুলি দ্রুত বা ধীর নয়" এটি সত্য নয়। CPythonবনাম PyPyদ্রুত মনে আসে।
NlightNFotis

@NlightNFotis - সিপিথন কত সেকেন্ড সময় নেয়? পিপিআই কত সেকেন্ড সময় নেয়? ভাষার বাস্তবায়ন দ্রুত বা ধীর নয়। সিপিথনের সাথে সেই প্রোগ্রামটি কত সেকেন্ড সময় নেয়?
igouy

উত্তর:


25

গ্রেট বেঞ্চমার্কস গেম অনুসারে , এটিএস হাস্কেল, স্কালার এবং বাকি পেছনের গতির জন্য মোটামুটি টাইতে কমন লিস্পের একটি রূপের চেয়ে বিশ্রামের চেয়ে দ্রুত। এর পরে ওকামল এবং এফ # প্রায় একই গতি বিভাগে র‌্যাকেট এবং ক্লোজারের পিছনে পিছনে রয়েছে ...

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


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

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

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

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

12

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

সুতরাং যখন আপনি "দ্রুততম কার্যকরী ভাষা" সম্পর্কে জিজ্ঞাসা করেন, আপনি ভাষা (গুলি) এর বর্তমান বাস্তবায়নের সর্বোত্তম সম্পর্কে কী জিজ্ঞাসা করছেন।


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

উদাহরণস্বরূপ জাভা বিবেচনা করুন। ধরুন আমি ক্লাসিক (জাভা ০.০) জাভাটির সম্পূর্ণ ভাষা বৈশিষ্ট্য ব্যবহার করে একটি একক থ্রেডযুক্ত বেঞ্চমার্ক লিখি। আমি যদি জেডিকে ১.০ ব্যবহার করে সংকলন ও চালনা করি তবে আমি একটি খারাপ পারফরম্যান্স পাব ('জেএসকে ১.০ এর কোনও নেটিভ কোড সংকলক নেই)। আমি যদি জেডিকে ১.১ থেকে ... জেডিকে ১.7 এ চলে যাই তবে আমি সম্ভবত সম্ভবত উত্তরোত্তর আরও ভাল ফলাফল পাব। তবে এটি জাভা ভাষার পরিবর্তনের কারণে নয় ... কারণ আমার বেঞ্চমার্ক একই ভাষার উপসেট ব্যবহার করছে। বরং গতিপথটি সংকলক, রানটাইম সিস্টেম এবং / অথবা শ্রেণি পাঠাগারগুলির প্রয়োগের উন্নতির কারণে to এগুলি সব বাস্তবায়নের বিষয়।

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


সুনির্দিষ্ট প্রোগ্রামগুলির কর্মক্ষমতা পরিমাপ করা সবচেয়ে ভাল আপনি যা করতে পারেন। আমরা যখন কোনও ভাষা বাস্তবায়নের কর্মক্ষমতা পরিমাপ করি তখন আমরা জানতে পারি যে কোনও প্রোগ্রাম সংকলন করতে কত সময় লাগে, না যে প্রোগ্রামটি চালাতে কতক্ষণ সময় লাগে।
igouy

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

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

আপনি যেমন বলতে চান - "কোনও ভাষার প্রয়োগের একটি (পরোক্ষ) পরিমাপ" - স্বাধীনতা পেতে চান - দয়া করে ব্যাখ্যা করুন কেন অন্য কারও কাছে নির্দ্বিধায় বলা উচিত নয় - একটি ভাষার (পরোক্ষ) পরিমাপ
igouy

@ আইগোই - ১) আপনি যা পছন্দ করেন তা বলতে নির্দ্বিধায় আপনি নির্দ্বিধায়। কিন্তু এটি আপনাকে সঠিক করে তোলে না। 2) কেবলমাত্র কোনও ভাষার প্রয়োগ বাস্তবায়নের জন্য বোকা তা বিবেচনা করুন। আমরা এটি বেঞ্চমার্ক। তারপরে আমরা প্রয়োগটি আপডেট করি, এটি বেঞ্চমার্ক করি এবং পারফরম্যান্স নাটকীয়ভাবে উন্নত হয়েছে। এর অর্থ কি ভাষার পারফরম্যান্স উন্নত হয়েছে? ভাষাটি বদলেনি এমনটি কীভাবে বোঝায় ...
স্টিফেন সি

6

যদি আপনি কেবল মৃত্যুদন্ড কার্যকর করার গতিতে ভাষার দিকে নজর রাখছেন তবে আপনি কিছু বড় পয়েন্ট মিস করছেন। গতি ভাল জিনিস, তবে এটি একমাত্র জিনিস নয়।

হাস্কেল প্রোগ্রামগুলি তৈরি করতে খুব শক্তিশালী টাইপ সিস্টেম ব্যবহার করে যা বাগ ফ্রি এবং মজবুত হওয়ার সম্ভাবনা অনেক বেশি।

এরলং এর বিল্ট ইন মনিটরিং সিস্টেমটি ব্যবহার করে আপনাকে ফল্ট সিস্টেম তৈরি করতে দেয় যা আপনাকে বিভিন্ন ধরণের ত্রুটির মুখে এক বিশাল স্তর নির্ভরযোগ্যতা দিতে পারে। তদুপরি এরলং আপনাকে এক স্তরের একমত হতে পারে যা অন্য ভাষায় মেলাও কঠিন।

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

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