এলএমএএক্স-এর দলটি কেন কোনও মূল্যে জিসি এড়াতে জাভা ব্যবহার করেছিল এবং আর্কিটেকচার ডিজাইন করেছিল?


24

এলএমএএক্স-এর দল কেন জাভাতে এলএমএএক্স বিপর্যয়কারী ডিজাইন করেছিল তবে জিসি ব্যবহারকে হ্রাস করার জন্য তাদের সমস্ত নকশার পয়েন্ট? কেউ যদি জিসি চালাতে না চান তবে কেন আবর্জনা সংগ্রহের ভাষা ব্যবহার করবেন?

তাদের অপটিমাইজেশন, হার্ডওয়্যার জ্ঞানের স্তর এবং তারা যে চিন্তাভাবনা করেছিল তা কেবল দুর্দান্ত তবে কেন জাভা?

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

বলুন যে তারা ম্যানুয়াল মেমরি পরিচালনার সাথে ডি ব্যবহার করে এটি বিকাশ করে, তফাত কী হবে? তাদের নিম্ন স্তরের (যা তারা ইতিমধ্যে রয়েছে) ভাবতে হবে তবে তারা সিস্টেমের স্থানীয় হিসাবে এটি সর্বোত্তম পারফরম্যান্সকে গ্রাস করতে পারে।


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

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

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

2
@gbjbaanb আমি ডি উল্লেখ করেছি কারণ এটি আবর্জনা সংগ্রহ সরবরাহ করে (এমন ক্ষেত্রে যেখানে উচ্চ স্তরের বিমূর্ততা মস্তিষ্কের পক্ষে খুব কঠিন) তবে এটি সি স্টাইল ম্যালোক এবং ফ্রি সহ ম্যানুয়াল মেমরি পরিচালনার অনুমতি দেয়। ডি হ'ল এআরসিটিভ-সি-এর মতো এআরসি (বাস্তব জিসি নেই) তবে এর চেয়ে ভাল। তবে হ্যাঁ, সি / সি ++ বিলটি ফিট করে।

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

উত্তর:


20

কারণ পারফরম্যান্স অনুকূলকরণ এবং সম্পূর্ণরূপে একটি সুরক্ষা বন্ধ করার মধ্যে একটি বিশাল পার্থক্য রয়েছে

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

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

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


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


তবে এটি আরও খারাপ হয়।

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

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


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

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

তবে বিশেষত ডি সম্পর্কে কী? যদি আপনি অন্ধকার কোণগুলির জন্য চান তবে আপনার একটি জিসি আছে এবং সেফডি সাবসেট (যা আমি সম্পাদনার আগে জানতাম না) অপরিজ্ঞাত আচরণটি সরিয়ে ফেলুন (যদি আপনি এটি ব্যবহার করতে মনে করেন!)।

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

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


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

2
lmax ইচ্ছাকৃতভাবে জাভা সরবরাহ করে এমন কিছু সুরক্ষা সাইড করুন
জেমস

এটি জাভা মিশন সমালোচনামূলক সফ্টওয়্যার জন্য লাইসেন্স না করা ব্যতীত, একটি দুর্দান্ত উত্তর হবে। আপনার যদি নিউক্লিয়ার চুল্লি থাকে, তবে এটি সি ++ তে লেখা থাকবে এবং জাভা নয়, যা পুরো "সুরক্ষা" দিকটি বাইরে ফেলে দেয়।
gbjbaanb

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

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

4

এটি জাভাতে লেখা হওয়ার কারণ বলে মনে হচ্ছে যে তারা ঘরে ঘরে জাভা দক্ষতা অর্জন করেছে এবং সি ++ সি ++ 0 এক্স / 11 এর সাথে একত্রে কাজ করার আগে এটি সম্ভবত লেখা হয়েছিল (যদিও এটি এখনও সক্রিয় বিকাশে রয়েছে)।

তাদের কোডটি আসলে নাম হিসাবে জাভা, তারা sun.misc.Unsafe বেশ কিছুটা জাভাটির পয়েন্টকে হারা করে এবং সুরক্ষা বলে মনে হয় যে কিছুটা দেয় use আমি বিপর্যয়ের একটি সি ++ পোর্ট লিখেছি এবং এটি তাদের পাঠানো জাভা কোডকে ছাড়িয়ে যায় (আমি জেভিএম টিউন করার জন্য খুব বেশি সময় ব্যয় করি না)।

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


আপনি কি আপনার বাস্তবায়ন নির্দেশ করতে পারেন? আমি উচ্চতর পারফরম্যান্সের দাবি করার চেয়ে বেশ কয়েকটি এ জাতীয় পুনরায় বাস্তবায়ন দেখেছি, তবে উভয়ই সরলিকরণের সাথে প্রতারণা করেছে: উদাহরণস্বরূপ, হার্ডওয়াইরিং 1 প্রযোজক + 1 ভোক্তা মূল ডিজাস্টারের মতো মাল্টি-প্রযোজক / ভোক্তা হওয়ার পরিবর্তে। বিপর্যয়ের লেখক নিজেই একটি গুগল গ্রুপ থ্রেডে উল্লেখ করেছিলেন যে জাভা সংস্করণে হার্ডওয়ারিং পরামিতিগুলির মাধ্যমে পারফরম্যান্সটি উন্নত করা যেতে পারে।
hmijail

4

এই প্রশ্নটি সত্য হিসাবে একটি ভুল ভিত্তি জানিয়েছে, তারপরে সেই ভুল ভিত্তি সম্পর্কে একটি যুক্তি তোলে।

এটিতে খনন করা যাক .. "জিসি ব্যবহারকে হ্রাস করার জন্য তাদের সমস্ত নকশার পয়েন্টগুলি" - সহজভাবে সত্য নয়। বিপর্যয়কারীদের মধ্যে উদ্ভাবনের জিসির সাথে খুব কম সম্পর্ক রয়েছে। বিঘ্নকারী কর্ম সম্পাদন করে কারণ এর ডিজাইনটি চতুরতার সাথে বিবেচনা করে আধুনিক কম্পিউটারগুলি কীভাবে কাজ করে - এমন কিছু যা প্রত্যাশার চেয়ে কম সাধারণ। আলোচনার জন্য ক্লিফ ক্লিকের আলাপ দেখুন http://www.azulstms.com/events/javaone_2009/session/2009_J1_HardwareCrashCourse.pdf একটি আলোচনার জন্য।

এটি সুপরিচিত যে এলম্যাক্স আজুলের গ্রাহক। আমি প্রথম থেকেই জানি যে আজুল জিসিগুলির সাথে কেবল একটি অযৌক্তিক বিষয় - এমনকি 175 গিগাবাইটের স্তূপ সহ।


এটি সত্য সত্য একটি দানা আছে। কোনও বড় সংগ্রহ এড়াতে তারা প্রতি রাতে ভিএম পুনরায় চালু করে। মার্টিন ফোলার যা লিখেছিলেন, সে যাই হোক না কেন এবং তিনি কোনও ডামি নন: "সিস্টেমের বাকী অংশগুলির মতো, বিঘ্নকারীদের রাতারাতি বাউন্স করা হয় This এই বাউন্সটি মূলত স্মৃতি মুছে দেওয়ার জন্য করা হয় যাতে ব্যবসায়ের সময় কোনও ব্যয়বহুল আবর্জনা সংগ্রহের ইভেন্টের সম্ভাবনা কম থাকে।" martinfowler.com/articles/lmax.html
জিমি জেমস

2
বেশ না। আমরা প্রতি রাতে একটি 5 মিনিটের ব্যবসায়িক ব্যবধানে একটি ম্যানুয়াল জিসি ট্রিগার করতাম এবং টিউন করতাম যাতে এক দিনের মধ্যে এটিই কেবলমাত্র প্রধান জিসি। এটি আজুল জিংয়ের সাথে অপ্রয়োজনীয় হয়ে উঠেছে। (উত্স: আমি সম্প্রতি অবধি এলএমএএক্স এ কাজ করেছি)
টম জনসন

@ টম জনসন অভ্যন্তরীণ স্কুপ পেতে ভালবাসে। আপনি কি বলছেন যে মার্টিন ফোলারের বর্ণনা ভুল? সময়ের সাথে সাথে সমাধানটি কি বিকশিত হতে পারে?
জিমি জেমস

2
আমি বলছি তিনি কিছু ছোটখাটো বিবরণে সঠিকভাবে সঠিক ছিলেন না n't আমরা কখনই আমাদের সিস্টেমগুলিকে প্রতিদিনের ভিত্তিতে বাউন্স করি নি, তবে আমরা দিনের পরিচ্ছন্নতার কিছুটা শেষ করেছি।
টম জনসন

3

তারা নিম্ন স্তরের চিন্তা করতে হবে

উপরে যে উত্তরটি আপনি খুঁজছেন তার অর্ধেকটি তৈরি করে। যুক্তিটি শেষ করতে আপনি আরও অর্ধেকটি খুঁজে পেতে পারেন LMAX ব্লগের চেয়ে আরও দূরে :

খুব দক্ষ থাকা অবস্থায় এটি স্ক্রু করা খুব সহজ বলে এটি বেশ কয়েকটি ত্রুটি ঘটাতে পারে ...

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

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

তুলনা করে, একটি উচ্চ-স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজ কম্পিউটারের আর্কিটেকচারের এক্সিকিউশন সিনটেমিকে প্রোগ্রামের স্পেসিফিকেশন থেকে পৃথক করে, যা বিকাশকে সহজতর করে ...


3

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

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


2
রিয়েল-টাইম সিস্টেমগুলির জন্য উপযুক্ত জঞ্জাল সংগ্রহকারী রয়েছে। জেভিএমের ডিফল্ট সংগ্রাহক নাও হতে পারে তবে এর অর্থ এই নয় যে সাধারণভাবে জিসি বাস্তব সময়ের জন্য অনুপযুক্ত। malloc/freeবিভক্তকরণের কারণে বরাদ্দ সময় আনবাউন্ডেড না হওয়ায় প্লেইন আসল সময়ের জন্য উপযুক্ত নয়।
ডোভাল

1
আমরা প্রতিটি কিছুর জন্য দ্রুত অবজেক্ট পুলগুলির ব্যবহারের পক্ষে পরামর্শ দিই যাতে উষ্ণায়নের পরে কোনও বরাদ্দ না ঘটে।
rdalmeida

2

LMAX একটি উচ্চ পারফরম্যান্স আন্ত-থ্রেড মেসেজিং লাইব্রেরি।

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

সি বা সি ++ ব্যবহার করা ভাল বিকল্প নয় যদি না আপনি নিজের ব্যবহারকারীদের একটি ওএস-তে সীমাবদ্ধ রাখতে চান, কারণ এতে কোনও থ্রেডিং মডেল নেই।

জাভা আজকাল প্রচুর সফ্টওয়্যার বিকাশের মান, সুতরাং আপনার যদি অন্য কোনও ভাল কারণ না থাকে তবে তা সেরা পছন্দ হিসাবে প্রবণ হয়। (যখন রোমে রোমানদের মতো কর…)

জাভাতে উচ্চ পারফরম্যান্স সফ্টওয়্যার (বা সি #) রচনাটি প্রায়শই একটি বিষয় প্রমাণ করার জন্য করা হয় ...


1
নতুন সি ++ 11 স্ট্যান্ডার্ড মাল্টিথ্রেডিং সমর্থন করে ...
কেসি

@ ক্যাসি এবং কতগুলি বাস্তব বিশ্বের সি ++ সংকলক এটি ব্যবহার করে? এবং এই সংকলকগুলির জন্য কত খরচ হয়। সম্ভবত 20 বছরের মধ্যে এটি কার্যকর হবে, ততক্ষণ আপনি এটির উপর নির্ভর করতে পারবেন না।
ইয়ান

বিপর্যয়কারী সূর্য.মিস্ক.অনুস্যাফিকে বেশ খানিকটা ব্যবহার করে যা দেখায় যে আপনি নিজের পায়ে সি ল্যান্ডে ডুবানো ছাড়া জাভাতে কম ল্যাটেন্সি কোডটি সত্যিই লিখতে পারবেন না
জেমস

3
জিসি সি ++ থ্রেড সমর্থন করে এবং এটি বিনামূল্যে
জেমস

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