কম বিলম্বিতা জাভা লেখা [বন্ধ]


30

জাভাতে কম ল্যাটেন্সি কোড লেখার জন্য কোনও জাভা-নির্দিষ্ট কৌশল (যে জিনিসগুলি সি ++ তে প্রযোজ্য হবে না) রয়েছে? আমি প্রায়শই জাভা কম বিলম্বিত ভূমিকা দেখতে পাই এবং তারা কম বিলম্বিত জাভা লেখার অভিজ্ঞতা জিজ্ঞাসা করে - যা কখনও কখনও অক্সিমোরনের কিছুটা মনে হয়।

আমি কেবল ভাবতে পারি যে জেএনআইয়ের সাথে অভিজ্ঞতা, আউটসোর্সিংয়ে আউটসোর্সিংয়ের স্থানীয় কোডে কল। এছাড়াও সম্ভবত বিঘ্নিত প্যাটার্ন ব্যবহার করে, তবে এটি কোনও আসল প্রযুক্তি নয়।

কম বিলম্বিত কোড লেখার জন্য কি জাভা নির্দিষ্ট টিপস আছে?

আমি জানি যে রিয়েল টাইম জাভা স্পেস রয়েছে, তবে আমাকে সতর্ক করা হয়েছে রিয়েল-টাইম কম বিলম্বের মতো নয় ....


সংগ্রহ চক্রটি ট্রিগার করতে পারে এমন অনেকগুলি অবজেক্ট তৈরি করবেন না আমার অনুমান
ratchet freak

@ র‌্যাচেট, আমি মনে করি নেটওয়ার্ক বা ডিস্ক সম্পর্কিত যে কোনও কিছুও জেএনআই হবে?
ব্যবহারকারী 997112

আরও লিঙ্ক এবং উপস্থাপনাগুলির জন্য, আপনি পারফরম্যান্স জাভা ব্যবহারকারীর গ্রুপ Plus.google.com/u/1/commonities/107178245817384004088
পিটার লরে

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

প্রধান কৌশলটি হ'ল কোনও জিসি ওভারহেড সম্পূর্ণরূপে এড়ানো। আপনি এই নিবন্ধটি সম্পর্কে আরও পড়তে পারেন জিসি ডেভেলপমেন্ট ছাড়াই জিসি
rdalmeida

উত্তর:


35

মার্তিজানের মন্তব্য ছাড়াও আমি যুক্ত করব:

  1. আপনার জেভিএম উষ্ণ করুন। বাইটকোড হটস্পটের জন্য ব্যাখ্যা করা শুরু হয় এবং 10 কে পর্যবেক্ষণের পরে সার্ভারে সংকলিত হয় । টায়ার্ড সংকলন একটি ভাল স্টপ ফাঁক হতে পারে।

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

  3. লিটলসের আইনের বিতর্ক এবং ক্রিয়াকলাপের প্রভাবগুলি এড়ানোর জন্য " একক লেখক নীতিমালা " অনুসরণ করুন এবং এর সাথে সমান্তরাল কী হতে পারে এবং এটি মূল্যবান সে জন্য আমধলের আইন অধ্যয়ন করুন।

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

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

  6. বাস্তববাদী হও. আপনার যদি স্বল্প-বিলম্বের প্রয়োজন হয় তবে হাইপারভাইজারের উপর চলবেন না। নিশ্চিত করুন যে চলতে সক্ষম অবস্থায় থাকা সমস্ত থ্রেডের জন্য আপনার কাছে পর্যাপ্ত কোর রয়েছে।

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

  8. বিরতিহীন আবর্জনা সংগ্রহকারী সহ আজুলের জিংয়ের মতো বিকল্প জেভিএম বিবেচনা করুন।

  9. সবচেয়ে গুরুত্বপূর্ণভাবে কাউকে অভিজ্ঞতার সাথে জড়িত করা। এটি আপনাকে দীর্ঘমেয়াদে অনেক সময় সাশ্রয় করবে। নির্লজ্জ প্লাগ :-)

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


2
একটি দুর্দান্ত উত্তরের জন্য +1। এর মতো টিএক্স প্রসেসিং পোস্টে আগ্রহী এমন কেউ কেউ গবেষণার জন্য দুর্দান্ত এক সূচনা পয়েন্ট।
এমসিফিনিগান

23

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

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

  2. সাধারণত আপনি লক ফ্রি অ্যালগোরিদম এবং আই / ও চান। এমনকি সর্বাধিক নকশাকৃত সাম্প্রতিক অ্যাপ্লিকেশন (যা লকগুলি ব্যবহার করে) ব্লক করার ঝুঁকিতে রয়েছে, কম বিলম্বিতভাবে ব্লক করা সাধারণত খারাপ :-)।

  3. অবজেক্ট বরাদ্দ এবং আবর্জনা সংগ্রহ বুঝুন। এটি একটি বিশাল বিষয়, তবে মূলত আপনি জিসি বিরামগুলি এড়াতে চান (প্রায়শই বিভিন্ন জিসি সংগ্রহের স্টপ ওয়ার্ল্ড প্রকৃতির কারণে ঘটে)। আজুল সংগ্রাহকের মতো বিশেষজ্ঞ জিসি সংগ্রাহকরা অনেক ক্ষেত্রেই আপনার সমস্যার সমাধান বাক্সের বাইরে করতে পারেন, তবে বেশিরভাগ লোকের জন্য তাদের কীভাবে সান / ওরাকল জিসিগুলি (সিএমএস, জি 1, ইত্যাদি) টিউন করা উচিত তা বুঝতে হবে।

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

  5. সামগ্রিক সিস্টেম আর্কিটেকচার। নেটওয়ার্ক সম্পর্কে সচেতন থাকুন, মেশিনগুলি কীভাবে সহ-অবস্থান করছে, যদি আপনি ফাইবার ইত্যাদির মাধ্যমে বিনিময়টির সাথে সংযুক্ত থাকেন etc.

  6. লগিংয়ের প্রভাব সম্পর্কে সচেতন হন। বাইনারি লগিং করা বা কোডড আউটপুট যা আপনি লাইনটি পার্স করতে পারেন তা ব্যবহার করা সম্ভবত একটি ভাল ধারণা।

সামগ্রিকভাবে আমি কર્ક পেপারডিনের জাভা পারফরম্যান্স টিউনিং কোর্সটি চালানোর সুপারিশ করছি [দাবি অস্বীকার: আমি নিজেই এই কোর্সটি পড়াই, তাই আমি পক্ষপাতদুষ্ট]। আপনি জেভিএমের বিভিন্ন দিক এবং এর অন্তর্নিহিত ও / এস এবং হার্ডওয়ারের উপর এর প্রভাবের ভাল কভারেজ পাবেন।

পিএস: আমি এটি পরে আবার ঘুরে দেখার চেষ্টা করব এবং কিছুটা পরিষ্কার করে দেখব।


সত্যিই খুব ভাল লাগবে যদি যান্ত্রিক সহানুভূতির সাথে অভিজ্ঞ ব্যক্তিরা যখন প্রদত্ত সীমানাটি অতিক্রম করে তখন সনাক্ত করার জন্য কিছু কৌশল ভাগ করে নিতে পারে।

আমি সত্যিকারের বিশেষজ্ঞদের চেষ্টা করে দেখার জন্য
টুইটারটি বেঁধে রেখেছি

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