রেডাক্স মেমরির খরচ [বন্ধ]


23

রেডাক্স কাঠামোটি অপরিবর্তনীয় রাষ্ট্র / খাঁটি ফাংশন দৃষ্টান্তের পক্ষে, যা বর্তমান ক্রিয়াটির ক্ষেত্রে পূর্ববর্তী রাজ্য থেকে নতুন রাজ্য গঠনের প্রচার করে। এই দৃষ্টান্তের প্রয়োগযোগ্যতা অনাবশ্যক।

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

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


4
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ এটি স্বেচ্ছাসেবী মেমরি প্রোফাইলিংয়ের তথ্য চাইছে।

হয়েছে আপনি এটা প্রোফাইল?

আমি কেন এটি প্রোফাইল করব? সুস্পষ্ট নিশ্চিত করতে? এটা কি সাধারণ জ্ঞান নয় যে বারবার একই জাতীয় বস্তু তৈরি করা স্মৃতি ব্যবহারের ক্ষেত্রে একটি গুরুতর ওভারহেডকে উত্সাহিত করে? @ ড্যানের উত্তর সেই ওভারহেডকে হ্রাস করার একটি উপায় সরবরাহ করে এবং এটি এ পর্যন্ত সেরা উত্তর।
000

উত্তর:


30

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

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

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

তবে শেষ পর্যন্ত বলার একমাত্র উপায় হ'ল স্ট্রেস টেস্টগুলি লিখুন যা আপনার অ্যাপ্লিকেশনটির অভিযুক্ত ব্যবহারকে ঘনিষ্ঠভাবে অনুকরণ করে এবং নিজের জন্য দক্ষতা পরিমাপ করে।


10
Immutable.js এ ঝাঁপিয়ে পড়া এত তাড়াতাড়ি করবেন না। এটি আমাদের ক্ষেত্রে মারাত্মক স্মৃতিশক্তি হয়ে উঠছে। Immutable.js আপনার (সম্ভবত) পরিষ্কার পরিচ্ছন্ন বস্তু নেয় এবং এগুলিকে স্মৃতি-ক্ষুধার্ত দানবগুলিতে ইনস্ট্যান্ট করে। এই উদাহরণটি একবার দেখুন: jsfiddle.net/sn70x2p6 লোড করার পরে, ট্যাবটি 61,000 কেবি মেমরি নেয়। এক মিলিয়ন সরল বস্তু তৈরির পরে, এটি 211,000 কেবি। ক্রেজি। এখন "অপরিবর্তনীয় করুন" ক্লিক করুন এবং দেখুন কী ঘটে। এটি 1 গিগাবাইটেরও বেশি মেমরির ব্যবহারে লাফ দেয়। আপনার অভিজ্ঞতা ভিন্ন হতে পারে, তবে খুব বেশি নয়।
ওলাভ কোকভকিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.