এরলং এর বৈশিষ্ট্য
থেকে Erlang প্রোগ্রামিং (2009):
এরং সমঝোতা দ্রুত এবং স্কেলযোগ্য। এর প্রসেসগুলি খুব কম ওজনের যে এরলং ভার্চুয়াল মেশিন প্রতিটি তৈরি প্রক্রিয়ার জন্য কোনও ওএস থ্রেড তৈরি করে না। এগুলি অন্তর্নিহিত অপারেটিং সিস্টেমের থেকে পৃথক, ভিএম-এ তৈরি, নির্ধারিত এবং পরিচালনা করা হয়। ফলস্বরূপ, প্রক্রিয়া তৈরির সময়টি মাইক্রোসেকেন্ডগুলির ক্রম এবং একই সাথে বিদ্যমান প্রক্রিয়াগুলির সংখ্যার চেয়ে পৃথক। এটি জাভা এবং সি # এর সাথে তুলনা করুন, যেখানে প্রতিটি প্রক্রিয়াটির জন্য একটি অন্তর্নিহিত ওএস থ্রেড তৈরি করা হয়: আপনি বেশ কয়েকটি প্রতিযোগিতামূলক তুলনা পাবেন, যার সাথে উভয় ভাষাকে ছাড়িয়ে গেছে এলাং।
এরলং (পিডিএফ) (স্লাইড) (2003)-এ কনকুরન્સી ওরিয়েন্টেড প্রোগ্রামিং থেকে :
আমরা পর্যবেক্ষণ করেছি যে এরলং প্রক্রিয়া তৈরি করতে যে সময়টি নেওয়া হয়েছে তা ধীরে ধীরে 1 2, 2,500 প্রক্রিয়া পর্যন্ত; এরপরে এটি 30,000 প্রসেসের জন্য প্রায় 3µs পর্যন্ত বৃদ্ধি পায়। জাভা এবং সি # এর কর্মক্ষমতা চিত্রের শীর্ষে দেখানো হয়েছে। অল্প সংখ্যক প্রক্রিয়াগুলির জন্য একটি প্রক্রিয়া তৈরি করতে প্রায় 300µs সময় লাগে। দুই হাজারেরও বেশি প্রক্রিয়া তৈরি করা অসম্ভব।
আমরা দেখতে পাই যে ৩০,০০০ প্রসেসের জন্য দুটি ইরং প্রসেসের মধ্যে একটি বার্তা প্রেরণের সময়টি প্রায় 0.8µs। সি # এর জন্য এটি প্রতি বার্তায় প্রায় 50µs লাগে, সর্বাধিক সংখ্যক প্রক্রিয়া (যা প্রায় 1800 প্রক্রিয়া ছিল) অবধি। জাভা আরও খারাপ ছিল, 100 টি প্রক্রিয়া পর্যন্ত এটি প্রতি বার্তায় প্রায় 50µs নিয়েছিল তারপরে এটি যখন প্রায় 1000 জাভা প্রক্রিয়া ছিল তখন তা বার্তা প্রতি 10 মিমি হয়ে দ্রুত বৃদ্ধি পেয়েছিল।
আমার চিন্তা
আমি প্রযুক্তিগতভাবে সম্পূর্ণরূপে বুঝতে পারি না কেন নতুন প্রসেস তৈরির ক্ষেত্রে এরলং প্রক্রিয়াগুলি এত বেশি দক্ষ এবং প্রক্রিয়া অনুযায়ী অনেক কম মেমরির পদক্ষেপ রয়েছে। ওএস এবং এরলং ভিএম উভয়কেই শিডিউলিং, প্রসঙ্গের স্যুইচ, এবং রেজিস্টারগুলিতে মূল্যবোধগুলি ট্র্যাক করে রাখতে হবে এবং এই জাতীয় ...
কেবল কেন ওআর থ্রেডগুলি এরলংয়ের প্রক্রিয়াগুলির মতো একইভাবে প্রয়োগ করা হয় না? তাদের কি আরও কিছু সমর্থন করতে হবে? এবং কেন তাদের আরও বড় মেমরির ছাপ দরকার? এবং কেন তাদের ধীরে ধীরে স্পোনিং এবং যোগাযোগ রয়েছে?
প্রযুক্তিগতভাবে, যখন স্প্যানিং এবং যোগাযোগের বিষয়টি আসে তখন এর্লংয়ে ওএস থ্রেডগুলির চেয়ে বেশি প্রক্রিয়াগুলি কেন হয়? এবং কেন ওএসের থ্রেডগুলি একই দক্ষ পদ্ধতিতে প্রয়োগ এবং পরিচালনা করা যাবে না? এবং ওএস থ্রেডগুলিতে কেন একটি বড় মেমরির পদচিহ্ন, আরও ধীরে ধীরে স্প্যানিং এবং যোগাযোগ রয়েছে?
আরও পড়া
erl +P 1000100 +hms 100
এবং টাইপ করুন {_, PIDs} = timer:tc(lists,map,[fun(_)->spawn(fun()->receive stop -> ok end end) end, lists:seq(1,1000000)]).
এবং ফলস্বরূপ প্রায় তিন মিনিট অপেক্ষা করুন। এটা খুব সহজ। এটি প্রতি প্রক্রিয়ায় 140us এবং খনি ল্যাপটপে 1 গিগাবাইট পুরো র্যাম লাগে। তবে এটি সরাসরি ফর্ম শেল, এটি সংকলিত কোড থেকে ভাল হওয়া উচিত।