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