কিভাবে জাভা পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত?


23

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

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

এখনও অবধি আমি ব্যাখ্যা করেছি যে ব্যবসার লজিক প্রসেসরের গতির চাবিকাঠি মেমরির অনুসারে ক্রমান্বয়ে সবকিছু করে চলেছে। কেবল এটি করা (এবং সত্যই বোকামির কিছুই নেই) বিকাশকারীদের কোড লিখতে দেয় যা 10 কে টিপিএসে প্রক্রিয়া করতে পারে।

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

আরও একটি চৌকসত্ব লাগল আরও একটি মাত্রার ক্রম যেতে। LMAX টিমটি সেখানে পৌঁছতে সহায়ক বলে মনে করে several এর মধ্যে একটি ছিল জাভা সংগ্রহগুলির কাস্টম প্রয়োগগুলি যা ক্যাশে-বান্ধব এবং আবর্জনা সম্পর্কে সতর্কতার জন্য ডিজাইন করা হয়েছিল write

পারফরম্যান্সের সেই শীর্ষ স্তরে পৌঁছানোর জন্য অন্য কৌশলটি পারফরম্যান্স পরীক্ষার দিকে মনোযোগ দিন putting আমি দীর্ঘদিন ধরে লক্ষ্য করেছি যে লোকেরা কর্মক্ষমতা উন্নত করার কৌশল সম্পর্কে অনেক কথা বলে, তবে একটি জিনিস যা সত্যই একটি পার্থক্য নিয়ে আসে তা হ'ল এটি পরীক্ষা করা

ফওলার উল্লেখ করেছিলেন যে বেশ কয়েকটি জিনিস পাওয়া গেছে তবে তিনি কেবল একটি দম্পতির কথা উল্লেখ করেছেন।

এমন কি অন্য কোনও আর্কিটেকচার, গ্রন্থাগার, কৌশল বা "জিনিস" আছে যা এই জাতীয় পারফরম্যান্সের পর্যায়ে পৌঁছতে সহায়ক?


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

কী কী সিস্টেমে উত্পন্ন কোডটি চালিত হয়েছে তা দেখতে তারা কোন সরঞ্জামগুলি ব্যবহার করত তা শিখতে খুব ভাল লাগবে।

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

উত্তর:


21

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

উচ্চ-স্কেল লেনদেন প্রসেসিং সিস্টেমের জন্য আপনি নিম্নলিখিতটি যতটা সম্ভব করতে চান:

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

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

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

ফাউলারের মতে, এলএমএক্স এইগুলির প্রতিটিটির জন্য নিম্নলিখিত পদ্ধতি গ্রহণ করে:

  1. সব সময় স্মৃতিতে সমস্ত রাষ্ট্র রাখুন । পুরো ডাটাবেস ইঞ্জিনগুলি প্রকৃতপক্ষে যাইহোক এটি করতে পারে , যদি পুরো ডাটাবেস মেমরির সাথে ফিট করে তবে তারা কোনও সুযোগ ছাড়াই ছেড়ে দিতে চায় না, যা রিয়েল-টাইম ট্রেডিং প্ল্যাটফর্মে বোধগম্য। এক টন ঝুঁকি না রেখে এটিকে টানতে, তাদের বেশ কয়েকটি হালকা ব্যাকআপ এবং ব্যর্থ অবকাঠামো তৈরি করতে হয়েছিল।

  2. ইনপুট ইভেন্টগুলির স্ট্রিমের জন্য একটি লক-ফ্রি ক্যু ("বিঘ্নকারী") ব্যবহার করুন। Traditional তিহ্যবাহী টেকসই বার্তা সারিগুলির বিপরীতে যা নিখরচায় লক মুক্ত হয় না এবং বাস্তবে সাধারণত বেদনাদায়ক-ধীর বিতরণ লেনদেন জড়িত ।

  3. বেশি না. এলএমএক্স এটিকে বাসের নীচে ফেলে দেয় এই ভিত্তিতে যে কাজের চাপগুলি পরস্পর নির্ভরশীল; একটির ফলাফল অন্যের জন্য পরামিতি পরিবর্তন করে। এটি একটি সমালোচনামূলক সতর্কতামূলক বিষয় এবং ফোলার স্পষ্টভাবে ডাকে one ব্যর্থতা সক্ষমতার জন্য তারা সামঞ্জস্যের কিছুটা ব্যবহার করে তবে ব্যবসায়ের সমস্ত যুক্তি একক থ্রেডে প্রক্রিয়াজাত হয় ।

LMAX উচ্চ-স্কেল ওয়ালটিপিতে একমাত্র পন্থা নয় । আর যদিও এটি তার নিজের অধিকার বেশ মেধাবী, আপনি কি না অর্ডার কর্মক্ষমতা যে স্তর টেনে করার জন্য bleeding-edge কৌশল ব্যবহার করতে হবে।

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

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

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


নীতিগুলি মূল অন্তর্নিহিত নীতিগুলি নিয়ে আলোচনা করা দুর্দান্ত এবং আপনার মন্তব্যটি দুর্দান্ত এবং ... যদি না ফাউলারের কাগজটিতে অসম্পূর্ণ অ্যালগরিদমগুলি ক্যাশে করার জন্য একটি পাদদেশের নোটে কোনও উল্লেখ না থাকত en.wikedia.org/wiki/Cache-oblivious_algorithm (যা এতে সুন্দরভাবে ফিট করে) বিভাগ 1 নম্বর আপনার উপরে আছে) আমি তাদের কখনও হোঁচট খাই না। সুতরাং ... আপনার উপরের প্রতিটি বিভাগের প্রতি শ্রদ্ধার সাথে আপনি কি শীর্ষস্থানীয় 3 টি জিনিস জানেন যা একজন ব্যক্তির জানা উচিত?
ডাকোটা উত্তর

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

র‌্যাম অ্যাক্সেস ল্যাটেন্সি (~ 10 ^ -9s) থেকে চৌম্বকীয় ডিস্ক ল্যাটেন্সিতে (~ 10 ^ -3s গড়-কেস) 1000x এর চেয়ে বেশি মাত্রার আরও কয়েকটি আদেশ। এমনকি এসএসডিগুলিতে এখনও কয়েকশ মাইক্রোসেকেন্ডে মাপার অ্যাক্সেসের সময় রয়েছে।
শেদাতে এলিয়েন

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

@ অ্যারোনট: পুনরায় পড়ার পরে, আমি অনুমান করি আপনি সঠিক আছেন। সম্ভবত একটি বিষয় তৈরি করা উচিত যে সমস্ত ডেটা অ্যাক্সেস যতটা সম্ভব যথাযথ হওয়া উচিত; র‌্যাম থেকে অর্ডার ক্রমে ডেটা অ্যাক্সেস করার সময় গুরুত্বপূর্ণ বেনিফিটগুলিও হতে পারে।
শেদাতে এলিয়েন

10

আমি মনে করি এ থেকে শেখার সবচেয়ে বড় পাঠটি আপনার মূল বিষয়গুলি দিয়ে শুরু করা দরকার:

  • ভাল অ্যালগরিদম, উপযুক্ত ডেটা স্ট্রাকচার এবং কিছু না করে "সত্যই বোকা"
  • সুসংগত কোড
  • পারফরম্যান্স টেস্টিং

পারফরম্যান্স পরীক্ষার সময় আপনি নিজের কোডটি প্রোফাইল করেন, বাধা খুঁজে পান এবং একে একে একে ঠিক করেন।

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


7

বিশেষত LMAX কোড সম্পর্কে মন্তব্য করবেন না কারণ আমি মনে করি যে এটি যথেষ্ট পরিমাণে নষ্ট করা হয়েছে, তবে আমি এখানে কিছু কাজ করেছি যেগুলি পরিমাপযোগ্য পরিমাপযোগ্য পারফরম্যান্সের উন্নতি করেছে।

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

  • সঠিক ডেটা স্ট্রাকচারটি ব্যবহার করুন এবং প্রয়োজনে একটি কাস্টম তৈরি করুন - সঠিক ডেটা স্ট্রাকচার ডিজাইনটি মাইক্রো-অপটিমাইজেশন থেকে আপনি যে উন্নতি পাবেন তা বামন করে, তাই প্রথমে এটি করুন। যদি আপনার অ্যালগরিদম প্রচুর দ্রুত হে (1) এলোমেলো অ্যাক্সেসের পঠনগুলির উপর পারফরম্যান্সের জন্য নির্ভর করে, আপনার কাছে এমন ডেটা কাঠামো রয়েছে যা এটি সমর্থন করে তা নিশ্চিত করুন! এই অধিকারটি পেতে কয়েকটি হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়া মূল্যবান, উদাহরণস্বরূপ এমন কোনও উপায় খুঁজে বের করুন যাতে আপনি খুব দ্রুত হে (1) সূচকযুক্ত পঠন কাজে লাগাতে একটি অ্যারেতে আপনার ডেটা উপস্থাপন করতে পারেন।
  • মেমোরি অ্যাক্সেসের চেয়ে সিপিইউ দ্রুত - আপনি স্মৃতি L1 / L2 ক্যাশে না থাকলে একটি এলোমেলো মেমরি পড়তে যে সময় লাগে তাতে আপনি বেশিরভাগ গণনা করতে পারেন। এটি যদি আপনার পড়া স্মৃতি থেকে বাঁচায় তবে এটি গণনা করার পক্ষে সাধারণত।
  • চূড়ান্ত - ক্ষেত্র, পদ্ধতি এবং ক্লাস চূড়ান্ত সহ জেআইটি সংকলককে সহায়তা করুন নির্দিষ্ট অপটিমেশানগুলি সক্ষম করে যা জেআইটি সংকলককে সত্যই সহায়তা করে। নির্দিষ্ট উদাহরণ:

    • সংকলকটি ধরে নিতে পারে যে একটি চূড়ান্ত শ্রেণীর কোনও সাবক্লাস নেই, সুতরাং ভার্চুয়াল পদ্ধতি কলগুলি স্থির পদ্ধতি কলগুলিতে রূপান্তর করতে পারে
    • সংকলক একটি দুর্দান্ত পারফরম্যান্স উন্নতির জন্য একটি স্ট্যাটিক চূড়ান্ত ক্ষেত্রকে ধ্রুবক হিসাবে বিবেচনা করতে পারে, বিশেষত যদি ধ্রুবকটি তখন গণনায় ব্যবহৃত হয় যা সংকলনের সময় গণনা করা যায়।
    • যদি জাভা অবজেক্ট যুক্ত ক্ষেত্রটি চূড়ান্ত হিসাবে শুরু করা হয়, তবে অপটিমাইজারটি নাল চেক এবং ভার্চুয়াল পদ্ধতি প্রেরণ উভয়কেই দূর করতে পারে। খুশী হলাম।
  • অ্যারে দিয়ে সংগ্রহের ক্লাসগুলি প্রতিস্থাপন করুন - এর ফলে কম পঠনযোগ্য কোড পাওয়া যায় এবং এটি বজায় রাখা কৌশলযুক্ত তবে এটি প্রায় সবসময়ই দ্রুত হয় কারণ এটি একটি স্তরকে সরিয়ে দেয় এবং প্রচুর চমৎকার অ্যারে-অ্যাক্সেস অপটিমাইজেশন থেকে বেনিফিট করে। সাধারণত আপনি এটি একটি বাধা হিসাবে চিহ্নিত করার পরে অভ্যন্তরীণ লুপস / পারফরম্যান্স সংবেদনশীল কোড সম্পর্কে একটি ভাল ধারণা, তবে অন্যথায় পাঠ্যতার পক্ষে এড়ানো উচিত!

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

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

  • মেমরি বরাদ্দ এড়ান - জেভিএম আবর্জনা সংগ্রহ অবিশ্বাস্যভাবে কার্যকর যেহেতু এটি সামগ্রিকভাবে আপনাকে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামিয়ে আনতে পারে। বরাদ্দ এড়াতে আপনি ব্যবহার করতে পারেন এমন বিশেষ ডেটা স্ট্রাকচার রয়েছে - বিশেষত http://javolution.org/ লাইব্রেরি এগুলির জন্য দুর্দান্ত এবং উল্লেখযোগ্য।

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

@ মাআর্টিনাস: finalকিছু জেআইটি-র বিষয়গুলি এটি নির্ধারণ করতে পারে, অন্যরা নাও পারে। এটি বাস্তবায়ন নির্ভর (অনেকগুলি পারফরম্যান্স টিউন করার পরামর্শ হিসাবে)। বরাদ্দের বিষয়ে সম্মত হন - আপনাকে এটি মানদণ্ড করতে হবে। সাধারণত আমি খুঁজে পেয়েছি বরাদ্দ অপসারণ করা ভাল, তবে ওয়াইএমএমভি।
মাইকেরা

4

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

  • Traditionalতিহ্যবাহী ক্যোয়ারী এবং লকগুলিতে ব্যবহৃত বিকাশকারীদের জন্য, নতুন পদ্ধতির কোডিং করা বন্য ঘোড়ায় চড়ার মতো মনে হতে পারে। ফ্যাসার নিয়ে পরীক্ষা করার সময় কমপক্ষে সেটাই আমার নিজের অভিজ্ঞতা ছিল যা এলএমএক্স প্রযুক্তিগত কাগজে উল্লেখ করা হয়েছিল concept সেই অর্থে আমি বলব যে এই পদ্ধতির বিকাশকারী মস্তিষ্কের কন্টেন্টের জন্য লক কনটেন্টেশনকে ব্যবসা করে

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

সামগ্রিকভাবে, বিপর্যয়কর দৃষ্টিভঙ্গি আমার কাছে বেশ প্রতিশ্রুতিবদ্ধ দেখাচ্ছে। এমনকি যদি আপনার সংস্থাটি এটি উপরে ব্যবহারের জন্য যেমন ব্যয় করতে পারে না, তবে এটির (এবং সাধারণভাবে SEDA ) অধ্যয়ন করার জন্য আপনার "ব্যয়" করার জন্য আপনার ব্যবস্থাপনাকে বোঝানোর কথা বিবেচনা করুন - কারণ যদি তারা না করেন তবে একদিন এমন সম্ভাবনা রয়েছে if তাদের গ্রাহকরা তাদের 4x, 8x ইত্যাদি কম সার্ভারের জন্য আরও কিছু প্রতিযোগিতামূলক সমাধানের পক্ষে রেখে দেবেন।

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