হাস্কেল (বেশিরভাগ জিএইচসি সহ) কিছু ডেটা ধরণের মান সঞ্চয় করতে প্রয়োজনীয় মেমরিটি কীভাবে খুঁজে পাব? রানটাইম (যেমন জিএইচসিআই তে) এর মূল্যায়ন করা সম্ভব বা এর উপাদানগুলি থেকে কোনও যৌগিক ডেটা মেমরির প্রয়োজনীয়তার অনুমান করা সম্ভব?
সাধারণভাবে, যদি মেমরির ধরণের প্রয়োজন হয় a
এবং b
এটি জানা থাকে তবে বীজগণিত ডেটা ধরণের মেমরির ওভারহেড কী যেমন:
data Uno = Uno a
data Due = Due a b
উদাহরণস্বরূপ, এই মানগুলি কয়টি বাইট মেমোরিতে দখল করে?
1 :: Int8
1 :: Integer
2^100 :: Integer
\x -> x + 1
(1 :: Int8, 2 :: Int8)
[1] :: [Int8]
Just (1 :: Int8)
Nothing
আমি বুঝতে পারি যে জঞ্জাল সংগ্রহের বিলম্বের কারণে প্রকৃত স্মৃতি বরাদ্দ বেশি। অলস মূল্যায়নের কারণে এটি উল্লেখযোগ্যভাবে আলাদা হতে পারে (এবং থাঙ্ক আকারটি আকারের সাথে সম্পর্কিত নয়)। একটি ডাটা টাইপ দেওয়া প্রশ্ন, সম্পূর্ণ মূল্যায়ন করা হয় যখন এর মান কত মেমরি লাগে?
আমি খুঁজে পেয়েছি :set +s
জিএইচসিআইতে মেমরির পরিসংখ্যানগুলি দেখতে একটি বিকল্প রয়েছে, তবে কীভাবে একটি একক মানের মেমরির পদচিহ্নটি অনুমান করা যায় তা পরিষ্কার নয়।